Что касается ответов на этот вопрос, мне ясно, что type
может быть идентификатором свойства в классах/интерфейсах и т. д.
Но почему Typescript позволяет это? По моему опыту, языки нечасто позволяют использовать ключевые слова в качестве идентификаторов. Откуда такая аберрация в ТС?
Я пробовал просматривать документы TS , но не смог найти ответа на этот вопрос.
Тип не является ограниченным ключевым словом, поскольку он использует «тип» как ключевое слово и идентификатор. Как мы знаем, TS — это надмножество JavaScript, а в JavaScript некоторые ключевые слова не зарезервированы так, как в других языках, таких как Java или C#. Это позволяет создавать более выразительный код, особенно в тех случаях, когда тип может использоваться в классе или интерфейсе.
TypeScript расширяет возможности разработчиков, позволяя пользователям создавать свойства, методы или переменные со значимыми именами, которые могут совпадать с ключевыми словами языка, позволяя использовать тип в качестве идентификатора. Сопровождающий TypeScript решил сохранить такое поведение, чтобы предоставить разработчикам большую гибкость и уменьшить потенциальные конфликты при переносе кода с JavaScript на TypeScript.
Но разрешение определенных ключевых слов в качестве идентификаторов может показаться нетрадиционным. Это дизайнерский выбор, направленный на баланс гибкости и выразительности языка. Но важно отметить, что использование ключевых слов в качестве идентификаторов может привести к потенциальной путанице в читаемости кода, поэтому часто рекомендуется избегать этой практики, когда это возможно.
TypeScript задуман как расширенная версия JavaScript. Каждая допустимая программа JS является допустимой программой TS.
type
не является ключевым словом в JS, а это означает, что если бы это было «жесткое» ключевое слово в TS, возникла бы проблема совместимости: вышеупомянутая связь была бы нарушена.
Этого создатели хотели избежать, поэтому они приложили все усилия, чтобы гарантировать, что type и несколько других ключевых слов являются специальными только в определенных контекстах, но в противном случае являются действительными идентификаторами.