enums - 枚举没有编译时 TypeScript 错误

标签 enums compiler-errors typescript

这对我来说看起来很奇怪,但是当我编写如下内容时,TypeScript 0.9.5 编译器不会生成任何编译时错误:

enum A {
    a,
    b,
    c,
}

var x : A = 20;

比较 C# 编译器会引发以下错误: 无法将类型“int”隐式转换为“System.Security.AccessControl.AccessControlSections”。存在显式转换(您是否缺少强制转换?)

对我来说,最好明确指定这样的转换:

var x : A = <A>20;

这是有意设计的并且在某些用例中是必需的还是只是被遗漏了?

最佳答案

这是故意的。事实上,C# 编译器知道您的意思(“您是否缺少强制转换?”),这一事实很有启发性——一般来说,TypeScript 会偏向于灵活性而不是严格性。有些人希望这里需要类型转换“以表明你考虑过这个问题”;这种情况下的假设是,您在编程时总是在思考,除非出现更明显的错误,否则不应该被打扰。

关于enums - 枚举没有编译时 TypeScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21094996/

相关文章:

java - 用于根据枚举类型验证字符串的自定义注释

java - 枚举当前设置的值

typescript - Apollo GraphQL 服务器 + TypeScript

angular - BrowserModule 已经加载错误

javascript - 将 typescript 模块导入到 React 应用程序中的 JS 模块

c# - 将单选按钮绑定(bind)到枚举属性

c - 从 C 中的函数返回枚举?

c++ - undefined reference 错误 Makefile c++

compiler-errors - 构建android源码报错

android - java.beans.VetoableChangeListener无法解析