Tyescript: Как определить типизацию для строго типизированного массива Array of Array

Уже есть подобный вопрос, единственное отличие состоит в том, что я хочу объявить наборы в d.ts файл вместо объявления каждый раз.

Я пишу набрав как

interface SomeType {
 key1: string[];
 key2: number;
}

которые Objects with named properties тип.


Теперь мне нужно Array with two sub-Arrays тип,

т.е. (что-то вроде):

 TheType : [string[], string[]]

Так что я могу написать

let myVar: TheType;

вместо

let myVar: [string[], string[]];

Я пытался играть с namespace, module, declare var если не повезет, я могу объяснить проблемы с ними, если потребуется, но я просто чувствую, что либо я упускаю что-то очень очевидное, либо это просто невозможно?!

Примечание: обходные пути! Нужны, спасибо!

1 ответ

Решение

Я бы смешал расширение интерфейса Array с общим для создания NestedArray тип, который вы можете использовать с любым типом. Наличие вложенного типа массива сделает ваши встроенные типы более читабельными:

interface NestedArray<T> extends Array<Array<T>> {}

var x: NestedArray<string> = [['a', 'b'], ['c', 'd'], ['e', 'f']];

var y = x[0]; // y is Array<string>
var z = x[0][1]; // z is string

Используйте с другими типами:

var x: NestadArray<Customer> = [];
Другие вопросы по тегам