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

Уже есть аналогичный вопрос, с той лишь разницей, что я хотите объявлять типы в файле 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, но безуспешно, я могу объяснить проблемы с ними, если потребуется, но я просто чувствую, что либо я упускаю что-то очень очевидное, либо это просто не так. возможный ?!

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


person Ankit Singh    schedule 29.11.2016    source источник


Ответы (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> = [];
person Fenton    schedule 29.11.2016
comment
NestedArray кажется законным, приятно - person Ankit Singh; 29.11.2016