:[Interface] 是 Typescript 中的有效数组定义吗?

Mic*_*ann 4 typescript

我的打字稿代码库中有一堆这样的代码......

export interface SomeType {
    name: string;
}

export interface SomeComposedType {
    things: [SomeType];
}
Run Code Online (Sandbox Code Playgroud)

这一直工作正常,但后来我开始遇到问题

类型中缺少属性“0”

“SomeType[]”类型的参数不可分配给“[SomeType]”类型的参数

我现在真的很困惑这个。我很确定

let x:SomeType[] = []
Run Code Online (Sandbox Code Playgroud)

相当于

let x: Array<SomeType> = []
Run Code Online (Sandbox Code Playgroud)

但是

let x:[SomeType] = []
Run Code Online (Sandbox Code Playgroud)

也等价和正确?

Rub*_*unk 13

No.[SomeType]代表一个元组类型,即一个数组,其中只有一个元素SomeType

[string, number],例如,将匹配一个数组 ["test", 0]


小智 6

否,let x: [SomeType]表示 x 是一个包含 1 个元素的数组,并且该元素的类型为SomeType

如果您需要声明一个包含SomeType仅使用您提到的两种形式之一的元素的数组,SomeType[]或者Array<SomeType>