Как мы можем аннотировать переменную, чтобы она имела тип `object`, но также аннотировать отдельные свойства?

#typescript #object

#typescript #объект

Вопрос:

В TypeScript я знаю, что мы можем определять переменные как object типы следующим образом.

 let myObject: object;
myObject = { name: 'Khabib', age: 32 };
  

Если я хочу также аннотировать свойства, я бы сделал следующее.

 let myObject: { name: string; age: number };
myObject = { name: 'Khabib', age: 32 };
  

Однако я не аннотировал myObject явно как object . Как я могу аннотировать myObject: object , а также отдельные свойства? Итак, в принципе, как мне объединить следующее в один оператор? Или это невозможно?

 let myObject: object;
myObject: { name: string; age: number };
  

Комментарии:

1. { } , разве это не гарантирует, что она является объектом?

2. В ванильном JavaScript я бы предположил то же самое. Тем не менее, я только начал изучать TypeScript, и, похоже, у меня есть возможность явно аннотировать переменную с object помощью . Итак, мне просто интересно, как бы я сделал то же самое при определении типов свойств.

3. В общем, typescript пытается отвлечь вас от размышлений о вещах просто как об «объекте», и вместо этого сосредоточиться на «форме» конкретного объекта, который вы имеете в виду. Итак, по большей части, вы хотите просто придерживаться своего второго определения, т. Е. {name: string; age: number} . Тем не менее, вы можете определять вещи более обобщенно, но object , вероятно, это не тот путь, которым вы хотите пойти. Не могли бы вы немного подробнее объяснить, чего вы пытаетесь достичь? Например, если вы хотите определить «универсальный» объект с любыми свойствами, полезный способ сделать это Record<string,any> — нет object .

4. Ааа, хорошо! Это действительно проницательно для меня. Спасибо!