gpt4 book ai didi

typescript - typescript 中的数组类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:59 24 4
gpt4 key购买 nike

为什么 TypeScript 允许这样做?我指定了一个数字索引。为什么可以使用字符串作为索引?Visual Studio 不报告错误。

interface StringArray {
[index: number]: string;

}

var a: StringArray;
a = { "key": "val" };
var b = a["key"];

最佳答案

问题

这是因为编译器仍然允许隐式 any 类型,这在使用索引访问对象的属性时可能发生:

// Example 1
let dictionary: { [index: number]: string };
let myStringTypedVar = dictionary[5]; // implicitly typed as "string"
let myAnyTypedVar = dictionary["prop"]; // implicitly typed as "any"

// Example 2
let myNumberTypedVar = 5;
let myAnyTypedVar = myNumberTypedVar["prop"]; // implicitly typed as "any"

修复:使用 --noImplictAny 编译

如果您使用 --noImplictAny 编译您的示例,那么它将出错:

tsc --noImplicitAny example.ts

输出:

example.ts(8,9): error TS7017: Index signature of object type implicitly has an 'any' type.

我建议始终使用 --noImplicitAny 进行编译。在 Visual Studio 中,您可以通过在项目属性的 typescript 构建选项卡中取消选中“允许隐式‘任何’类型”来打开 --noImplictAny:

Disable allow implicit any

或者在 tsconfig.jsoncompilerOptions 中添加 "noImplicitAny": "true"

关于typescript - typescript 中的数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33626014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com