Javascript NetSuite SuiteScript-使用类

Javascript NetSuite SuiteScript-使用类,javascript,netsuite,suitescript,Javascript,Netsuite,Suitescript,我对SuiteScript是个新手,对Javascript来说也只是个新手 我有一个单独的文件,其中包含我所有的函数等等,我上传到NetSuite并进行部署——一切都很好。但是我想创建并使用一个类,从我上传的文件中创建它的实例 那我该怎么做呢?类声明是否需要在另一个Javascript文件中?我能在一个文件中全部完成吗?如果我可以在一个文件中完成这一切,语法是什么?我不能让它在一个文件中工作;它总是抛出一个错误。如果我可以把它放在另一个文件中,该文件的语法是什么?那么如何将其包含在第一个文件中

我对SuiteScript是个新手,对Javascript来说也只是个新手

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

那我该怎么做呢?类声明是否需要在另一个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
    };
});
我知道,类声明如下所示:

class Result
{
    constructor(name) 
    {
        this.name = name;
    }
}
但我该把声明放在哪里呢

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

您可能会发现此链接很有帮助


最好的办法是将类包装在
定义([],function(){})
中,返回类。然后将该文件包括在SuiteScript文件中,如定义(['N/search','./myClass.js'],函数(search,myClass){})底线,您需要输入脚本并确保使用下面的tsconfig。我们在工作中虔诚地使用它

tsconfig.json

{
  "compilerOptions": {
    "module": "amd",
    "target": "es5",
    "sourceMap": false,
    "removeComments": false,
    "experimentalDecorators": true,
    "outDir": "src/FileCabinet/SuiteScripts/dist/"
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules"
  ]
}
示例类

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中的类用法

// 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();