Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 扩展typescript中的数组基元(angular cli项目)_Javascript_Angular_Typescript_Angular Cli_Extend - Fatal编程技术网

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"
  ]
}