В TypeScript, когда мы хотим определить тип объекта, есть несколько кратких опций, таких как «Объект», «{}» и «объект». В чем разница между ними?
Объект (заглавными буквами) описывает свойства, общие для всех объектов JavaScipt. Он определен в файле lib.es5.d.ts, который входит в состав библиотеки TypeScript.
Как видите, он включает в себя некоторые общие свойства, такие как toString(), valueOf() и т. д.
Потому что он подчеркивает только те свойства, которые являются общими для объектов JavaScript. Таким образом, вы можете назначать ему коробчатые объекты, такие как строка, логическое значение, число, bigint, символ, но не наоборот.
{} описывает объект, который не имеет собственных членов, а это означает, что TypeScript будет жаловаться, если вы попытаетесь получить доступ к членам его свойств:
Из приведенного выше примера кода мы видим, что {} и Object (в верхнем регистре) имеют одинаковые функции. То есть он может получить доступ только к тем свойствам, которые являются общими (даже если логика кода JavaScript правильна), ему можно назначить все коробочные объекты и т.д.
Это связано с тем, что тип {} может получить доступ к этим общим свойствам через цепочку прототипов, а также не имеет собственных свойств. Таким образом, он ведет себя так же, как и тип Object (в верхнем регистре). Но они представляют собой разные концепции.
объект (строчными буквами) означает любой непримитивный тип, который выражается в следующем коде:
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
Это означает, что ему не могут быть присвоены все непримитивные типы, и наоборот.
В исходном коде многих распространенных библиотек мы можем видеть Record
Если мой контент вам полезен, пожалуйста, рассмотрите возможность подписки. Я отправляю _ еженедельный информационный бюллетень каждое воскресенье _ с последними обновлениями веб-разработки. Спасибо за вашу поддержку!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3