Как переопределить подписи индекса - PullRequest
0 голосов
/ 09 мая 2020

Как мне создать производную Array, но с другой подписью индекса?

Например

interface SaferArray<T> extends Array<T> {
  [i: number]: T | undefined
}

Ошибка:

Interface incorrectly extends interface 'T[]'.
  Index signatures are incompatible.
    Type 'T | undefined' is not assignable to type 'T'.      

1 Ответ

1 голос
/ 09 мая 2020

Я бы сделал это с псевдонимом типа:

type SaferArray<T> = Array<T | undefined>;

const example: SaferArray<string> = ["hello"];

const a = example[0]; // string | undefined
const b = example[1]; // string | undefined

Можно расширить, если хотите. Вам просто не хватает | undefined в расширяемом типе:

interface SaferArray<T> extends Array<T | undefined> {
  [i: number]: T | undefined
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...