是否可以创建一个类型或接口,它是一个数组,在TypeScript中正好有“n”个条目?
我想创建一个包含最多和最少两个条目的数组。 以下是预期行为的示例:是否可以创建一个类型或接口,它是一个数组,在TypeScript中正好有“n”个条目?,typescript,Typescript,我想创建一个包含最多和最少两个条目的数组。 以下是预期行为的示例: const foo1: IShortArray = ['bar', 'baz', 'foz']; // TypeScript: error const foo2: IShortArray = ['bar']; // TypeScript: error const foo3: IShortArray = ['bar', 'baz']; // TypeScript: OK 我试过这样的方法: export interface IS
const foo1: IShortArray = ['bar', 'baz', 'foz']; // TypeScript: error
const foo2: IShortArray = ['bar']; // TypeScript: error
const foo3: IShortArray = ['bar', 'baz']; // TypeScript: OK
我试过这样的方法:
export interface IShortArray extends Array<string> {
0: string;
1: string;
}
type IShortArray = [string, string]
const foo1: IShortArray = ['bar', 'baz', 'foz']; // TS: error
const foo2: IShortArray = ['bar']; // TS: error
const foo3: IShortArray = ['bar', 'baz']; // TS: OK
它确实可以编译,但不能按预期工作。已经有一种称为元组的原语类型。元组允许您定义一个具有已知项数的数组,就像数组一样,您可以在其中存储不同的数据类型 它看起来像这样:
export interface IShortArray extends Array<string> {
0: string;
1: string;
}
type IShortArray = [string, string]
const foo1: IShortArray = ['bar', 'baz', 'foz']; // TS: error
const foo2: IShortArray = ['bar']; // TS: error
const foo3: IShortArray = ['bar', 'baz']; // TS: OK
下面是进一步阅读的示例。已经有了一种称为元组的基本类型。元组允许您定义一个具有已知项数的数组,就像数组一样,您可以在其中存储不同的数据类型 它看起来像这样:
export interface IShortArray extends Array<string> {
0: string;
1: string;
}
type IShortArray = [string, string]
const foo1: IShortArray = ['bar', 'baz', 'foz']; // TS: error
const foo2: IShortArray = ['bar']; // TS: error
const foo3: IShortArray = ['bar', 'baz']; // TS: OK
这是供进一步阅读的答案