【发布时间】:2019-10-29 00:19:36
【问题描述】:
打字稿元组没有按我的意愿工作。
tsc版本3.6.4
1、当我像下面这样初始化一个元组时:
let x: [string, number];
x[0] = 'John';
并通过tsc得到以下javascript:
var x;
x[0] = 'John';
现在用node 运行,我得到了这个错误:
/home/peng/ts-learnings/dist/tuple.js:2
x[0] = 'John';
^
TypeError: Cannot set property '0' of undefined
at Object.<anonymous> (/home/peng/ts-learnings/dist/tuple.js:2:6)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
这是我的tsconfig.json:
{
"include": [
"src/*.ts"
],
"compilerOptions": {
"noImplicitAny": true,
"target": "es2016",
"outDir": "dist/",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"types": [
"reflect-metadata"
]
}
}
请告诉我有什么问题。
2、而且这段代码sn-p也让我很困惑。
type Person = [string, number];
let tom: Person = ['Tom', 35];
tom[0] = 'John';
tom[1] = 25;
tom.pop();
// ['John']
tom.push('test');
// ['John', 'test']
正如一些TS教程所说,语句tom.push('test')不能通过编译器检查,因为tom[1]是number的类型!
【问题讨论】:
-
请说明您的问题
-
检查 typescript tuple 文档以获取示例
-
@Anna 对不起,我已经阅读了好几遍文档了。
标签: typescript tuples