typescript - 为什么打字稿要求我设置布尔类型的值?
问题描述
function f1()
{
const v : string = String();
if(v) {alert("IF");} // OK
const b : boolean = v; // Type 'string' is not assignable to type 'boolean'.
if(b) {alert("BOOLEAN");}
}
f1();
现在我对这个问题的解决方案是双感叹号,但我闻到麻烦或者我错了:
const b : boolean = !!v; //OK
我用这个quide作为基础。
解决方案
这是一个类型安全的决定。if
您可以在(或预期条件的其他地方,例如while
或)中使用任何类型,?:
因为这在 JS 中有效并且是常见的做法。
如果您显式声明一个 type 变量boolean
,这意味着您要将可能的值限制为true
or false
(undefined
并且null
如果您不使用strictNullChecks
)。由于 Typescript 不执行运行时转换,如果您的分配被允许,b
将包含一个string
. 当然,如果在条件句中使用它会起作用,但===
例如可能会产生意想不到的结果。
将任何值的类型转换为boolean
使用双重否定(!!
)在 JS 中很常见,并且很好用。
推荐阅读
- python - Flask 自定义装饰器
- ios - 在获取数据 Firebase / Swift 之前加载的 TableView
- r - R Markdown:在“参考”部分之后放置一个附录?
- android - 垂直网格支持片段在滚动时丢失位置
- python - 如何从使用 setItemWidget 设置的 QListWidgetItem 获取按钮信号?如何删除没有空格的 QListWidgetItem?
- go - 如何获取 Firestore 文档的 ID?
- docker - K8S基础设施查询
- amazon-web-services - 无法使用 MFA 担任跨账户角色。aws cli 不提供任何输出
- c++ - C ++:free():下一个大小无效(快速)
- android - 即使已经提供了 @Provides 方法,也无法在没有 @Provides 的情况下提供对象