首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetSuite SuiteScript -使用类

NetSuite SuiteScript -使用类
EN

Stack Overflow用户
提问于 2021-03-23 06:04:16
回答 2查看 287关注 0票数 0

对于SuiteScript来说,我是一个新手,对Javascript来说也就是如此。

我有一个单独的文件,其中包含我所有的函数等等,我将其上传到NetSuite并进行部署-一切都很好。但是我想创建和使用一个类,从我上传的文件中创建它的实例。

那么我该怎么做呢?类声明是否需要在另一个Javascript文件中?我可以在一个文件中完成所有这些操作吗?如果我可以在一个文件中做所有的事情,语法是什么?我不能让它在一个文件中工作;它总是抛出错误。如果我可以把它全部放到另一个文件中,那么这个文件中的语法是什么?然后如何将其包含在第一个文件中?

这是我的Javascript文件的一个简短版本:

代码语言:javascript
复制
define(['N/search'],
       
function (search)
{
    function fieldChanged(scriptContext)
    {
        // Code here where I create and run a search. I want to put each result
        // from the search into an instance of the class I want to create and
        // store all of those instances in an array.
    }

    return {
        fieldChanged: fieldChanged
    };
});

我知道,类声明看起来是这样的:

代码语言:javascript
复制
class Result
{
    constructor(name) 
    {
        this.name = name;
    }
}

但是我该把声明放在哪里呢?

抱歉,如果这是一个非常愚蠢的问题。

EN

回答 2

Stack Overflow用户

发布于 2021-03-23 21:50:04

https://3en.cloud/insight/2018/1/26/using-es6-with-suitescript-20

你可能会发现这个链接很有帮助。

最好的想法是将您的类包装在define([], function() {})中,并返回该类。然后将该文件包含在您的SuiteScript文件中,如define(['N/search', './myClass.js'], function(search, myClass) {})

票数 1
EN

Stack Overflow用户

发布于 2021-04-13 00:35:31

底线是,你需要typescript,并确保你使用下面的tsconfig。我们在工作中很认真地使用它。

tsconfig.json

代码语言:javascript
复制
{
  "compilerOptions": {
    "module": "amd",
    "target": "es5",
    "sourceMap": false,
    "removeComments": false,
    "experimentalDecorators": true,
    "outDir": "src/FileCabinet/SuiteScripts/dist/"
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules"
  ]
}

示例类

代码语言:javascript
复制
export class MyNetsuiteClass extends NetsuiteActor {
​
    constructor(modules: INetsuiteModules) {
        super(modules);
    }
​
    GetAccountID(): string {
        try {
            return this.modules.runtime.accountId;
        } catch (e) {
            throw e.details || e.message || e.toString();
        }
    }
}

SS2.0中的类用法

代码语言:javascript
复制
// declare the modules you want to inject
var modules = {record: record, search: search, runtime: runtime};
​
// fianlly, instantiate your class with all 3 required params
var myNetsuiteClass = new myCustomModule.MyNetsuiteClass(modules);
var accountId = myNetsuiteClass.GetAccountID();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66754464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档