Ifa*_*uki 0 javascript typescript
目前我有一个具有这种类型的数组:
handlers: string[][]
Run Code Online (Sandbox Code Playgroud)
它有例如: [["click", "inc"], ["mousedown", "dec"]]
现在我想将我的结构更改为:
[[{ handler: "click", modifiers: ["enter"] }, "inc"]]
Run Code Online (Sandbox Code Playgroud)
我如何定义我的第二个 arra 的第一个元素是一个包含名为handlerand的属性的对象modifiers?
Typescript 具有元组类型,可让您定义具有特定长度和类型的数组:
let arr: [number, number, number];
arr = [1, 2, 3]; // ok
arr = [1, 2]; // Type '[number, number]' is not assignable to type '[number, number, number]'
arr = [1, 2, "3"]; // Type '[number, number, string]' is not assignable to type '[number, number, number]'
Run Code Online (Sandbox Code Playgroud)
所以只需使用如下类型:
handlers: [{handler: string, modifiers: string[]}, string][]
Run Code Online (Sandbox Code Playgroud)
一种替代方法,当仅在第一个元素上需要此类型时:
interface MyInterface {
[index: number]: string[] | [{handler: string, modifiers: string[]}, string];
0: [{handler: string, modifiers: string[]}, string];
}
Run Code Online (Sandbox Code Playgroud)
或者当该类型仅在使用Variadic 元组类型时才有效
type MyType = [[{handler: string, modifiers: string[]}, string], ...string[][]]
Run Code Online (Sandbox Code Playgroud)