Создайте типизацию только для некоторых свойств объекта - PullRequest
0 голосов
/ 24 апреля 2020

Есть ли способ указать тип только для некоторых свойств объекта вместо всех? Например, если у меня есть какой-либо объект, например

const user_account = {id: 37593, created: "23/04/2020", last_active: "23/04/2020"};

, и я хотел указать только id типа number, а все остальное оставить как any, есть ли способ сделать это? это? Спасибо.

1 Ответ

1 голос
/ 24 апреля 2020

Вы можете использовать подпись индекса строки , чтобы показать, что все свойства соответствуют определенному типу значения; в вашем случае any. Любые именованные свойства, которые вы добавляете к объекту вне подписи индекса, должны по-прежнему соответствовать этому типу, но вы можете сделать их более точными c. Поскольку number является более точным c, чем any, вы можете представить свой тип как { [k: string]: any; id: number }.

Так что

const settings: { id: number, [k: string]: any } = 
  {id: 37593, created: "23/04/2020", last_active: "23/04/2020"};

должно работать для вас, в зависимости от вашего использования дело. Обратите внимание, что такая аннотация расширит тип settings до аннотированного типа, поэтому компилятор не запомнит ничего, не указанного в этом типе:

settings.id; // known to be number
settings.created; // only known as any, not string
settings.randomPropName; // also known as any

Хорошо, надеюсь, это поможет; удачи!

Детская площадка ссылка на код

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