由于TypeScript是强类型的,简单地使用if(){}来检查null和undefined听起来并不正确。
TypeScript有专门的函数或语法吗?
由于TypeScript是强类型的,简单地使用if(){}来检查null和undefined听起来并不正确。
TypeScript有专门的函数或语法吗?
当前回答
对于Typescript 2.x。X你应该用以下方式(使用类型保护):
博士tl;
function isDefined<T>(value: T | undefined | null): value is T {
return <T>value !== undefined && <T>value !== null;
}
Why?
这样,isDefined()将尊重变量的类型,下面的代码将知道这个检入帐户。
例1 -基本检查:
function getFoo(foo: string): void {
//
}
function getBar(bar: string| undefined) {
getFoo(bar); //ERROR: "bar" can be undefined
if (isDefined(bar)) {
getFoo(bar); // Ok now, typescript knows that "bar' is defined
}
}
例2 -类型尊重:
function getFoo(foo: string): void {
//
}
function getBar(bar: number | undefined) {
getFoo(bar); // ERROR: "number | undefined" is not assignable to "string"
if (isDefined(bar)) {
getFoo(bar); // ERROR: "number" is not assignable to "string", but it's ok - we know it's number
}
}
其他回答
如果你正在使用TypeScript,让编译器检查空值和未定义值(或可能存在的)是一个更好的方法,而不是在运行时检查它们。(如果您确实想在运行时检查,那么正如许多答案所表明的那样,只需使用value == null)。
使用编译选项strictNullChecks告诉编译器阻塞可能的空值或未定义值。如果你设置了这个选项,然后有一个你想要允许null和undefined的情况,你可以定义类型为type | null | undefined。
TypeScript有专门的函数或语法糖吗
TypeScript完全理解JavaScript版本== null。
通过这样的检查,TypeScript会正确地排除null和undefined。
More
https://basarat.gitbook.io/typescript/recap/null-undefined
可能已经晚了!但是你可以用??typescript中的运算符。 参见https://mariusschulz.com/blog/nullish-coalescing-the-operator-in-typescript
你可能想试试
if(!!someValue)
! !
解释
第一个!将表达式转换为布尔值。
如果someValue为假则为真,如果someValue为真则为假。这可能会让人困惑。
通过添加另一个!,表达式现在如果someValue为真则为真,如果someValue为假则为假,这更容易管理。
讨论
现在,为什么我要用if (!!someValue)来麻烦自己,而像if (someValue)这样的东西会给我相同的结果?
因为! !someValue恰好是一个布尔表达式,而someValue可以是任何东西。这种表达式现在可以编写如下函数(上帝,我们需要这样的函数):
isSomeValueDefined(): boolean {
return !!someValue
}
而不是:
isSomeValueDefined(): boolean {
if(someValue) {
return true
}
return false
}
我希望这能有所帮助。
if( value ) {
}
如果value不为true,则求值为true:
零 未定义的 南 空字符串" 0 假
Typescript包含javascript规则。