Javascript 扩展typescript中的数组基元(angular cli项目)
我需要能够轻松地对集合进行排序,我选择了扩展数组原语。我意识到这在大多数情况下被认为是不好的做法,但这将只在内部使用(而不是共享库)。无论我尝试了什么方法,我都没有得到有效的结果。我一直收到错误:Javascript 扩展typescript中的数组基元(angular cli项目),javascript,angular,typescript,angular-cli,extend,Javascript,Angular,Typescript,Angular Cli,Extend,我需要能够轻松地对集合进行排序,我选择了扩展数组原语。我意识到这在大多数情况下被认为是不好的做法,但这将只在内部使用(而不是共享库)。无论我尝试了什么方法,我都没有得到有效的结果。我一直收到错误:TypeError:试图分配给只读属性。这是我最新迭代的一个简化示例。我有一个更完整的版本,所以我假设问题在于angular cli配置/构建过程 接口数组{ $sortBy(sortKey:string):T[]; } if(!Array.prototype['$sortBy']){ Object.d
TypeError:试图分配给只读属性
。这是我最新迭代的一个简化示例。我有一个更完整的版本,所以我假设问题在于angular cli配置/构建过程
接口数组{
$sortBy(sortKey:string):T[];
}
if(!Array.prototype['$sortBy']){
Object.defineProperty(Array.prototype,“$sortBy”{
值:函数(sortKey){
返回此.sort(函数(a,b){//TypeError here???
如果(a[sortKey]b[sortKey]){return 1;}
返回0;
});
}
}
}
我也尝试过这种方法,但我的IDE(VSCode)给了我一个错误:[ts]属性“$sortBy”在类型“any[]”上不存在。
此处出现Intellisense错误
|
v
Array.prototype.$sortBy=function(sortKey:string){
返回此.sort(函数(a,b){
...
});
}
tsconfig.json
tsconfig.app.json
您使用的是哪个版本的typescript?您的
tsconfig.json
是什么?您的代码在操场上运行良好。可能有一些更适合您的需要。我没有尝试数组实用程序,但数据结构很好。签出:从typescript 1.6开始,您可以扩展数组type@NitzanTomer在上面添加了我的ts配置。我正在使用TS 2.1.6。这是一个角度cli项目。此外,不管您有什么问题,扩展数组
接口需要在if(!Array.prototype['$sortBy'])之外。
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"lib": [
"es2016"
]
}
}
{
"extends": "../tsconfig.json",
"compilerOptions": {
"lib": [
"es2016",
"dom"
],
"outDir": "../out-tsc/app",
"target": "es5",
"module": "es2015",
"baseUrl": "",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}