声明类型的:
语法有什么区别
let serverMessage: UServerMessage = message;
和as
语法
let serverMessage = message as UServerMessage;
至少在这个例子中他们似乎产生了相同的结果
最佳答案
一个是类型注解,一个是类型断言。
类型注解告诉编译器检查赋值是否完全有效以及message
确实与UServerMessage
兼容
类型断言告诉编译器,我知道我在做什么,message
是一个 UServerMessage
,不管你认为你知道什么,我有更多信息和我最清楚。即使您使用类型断言,某些检查仍会执行,因此您可能会看到双重断言 message as any as UServerMessage
例如,如果 message
的类型与 非常不兼容UServerMessage
您应该始终更喜欢类型注释而不是断言。谨慎使用断言,并且仅在必要时才使用。类型断言是把方钉插入圆孔的锤子,有时很有用,但您可能会再看看您在做什么,以确保它是正确的。确保它不是:
关于typescript - 使用冒号和 as 语法来声明类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684886/