Как сделать этот простой интерфейс в TypeScript? - PullRequest
0 голосов
/ 07 апреля 2020

Во-первых, я уверен, что этот вопрос уже задавался, но я также уверен, что не знаю, что набрать в Google или SO, чтобы найти ответ. Итак, я спрашиваю.

Мне нужен интерфейс с одним ключом с именем id типа number. Могут быть и другие ключи, которым мы не знаем имя и которые имеют строковые значения.

Я пробовал это:

export interface MyInterface {
  id: number
  [key: string]: string
}

, но он говорит мне

Свойство 'id' типа 'number' нельзя присвоить строковому индексу типа 'string'.

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 07 апреля 2020

Обновление:

Я нашел эту проблему: https://github.com/Microsoft/TypeScript/issues/10042

и в документации по индексируемым типам

https://www.typescriptlang.org/docs/handbook/interfaces.html#indexable -типов

говорит

они также обеспечивают, чтобы все свойства соответствовали их типу возвращаемого значения.

Так что, вероятно, ваше поведение не может быть решено!


Надеюсь, что это решение подходит для вас:

export interface MyInterface {
    id: number;
    [key: string]: string | number;
}

И безопасный тип для id работает.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...