鉴于此打字稿(2.7.2)界面:
export interface A {
b?: string;
c?: boolean;
}
Run Code Online (Sandbox Code Playgroud)
这将按预期打印布尔值'false':
let a: A = {b: ''};
if (a.b && a.b.length > 0) {
a.c = true;
} else {
a.c = false;
}
console.log(a.c);
Run Code Online (Sandbox Code Playgroud)
但是,这会打印一个空的''字符串:
let a: A = {b: ''};
a.c = a.b && a.b.length > 0;
console.log(a.c);
Run Code Online (Sandbox Code Playgroud)
我在这里有点困惑.第二个例子应该像第一个例子一样,对吧?我错过了什么?
a.b && a.b.length > 0这相当于"" && false因为空字符串评估falsy.表达式"" && false评估为"".这就是为什么a.c是"".
像这样重构它,
a.c = a.b && a.b.length > 0 ? true : false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |