2017-01-31 2 views
1

Как я печатаю такую ​​функцию?TypeScript isNullOrUndefined

function isNullOrUndefined(obj: any) { 
    return typeof obj === "undefined" || obj === null; 
} 

Если я возвращаю любое, это означает, что оно может быть по-прежнему недействительным или неопределенным. Я хочу использовать его таким образом:

let a: string | null | undefined = undefined; 
if (!isNullOrUndefined(a)) { 
    const b: string = a; 
} 

ответ

2

найден!

function isNullOrUndefined<T>(obj: T | null | undefined): obj is null | undefined { 
    return typeof obj === "undefined" || obj === null; 
} 
+0

Я не понимаю, что вы точно пытались сделать здесь. – CoderPi

+0

Мне нужен охранник типа для преобразования строки | null | undefined 'в строку и использовать его безопасно. См. Флаг strictNullChecks: https://www.typescriptlang.org/docs/handbook/compiler-options.html –

0

Вы можете использовать объявление параметра optional - ?: и принять преимущество loose equality (coercion) между null и undefined упростить эту функцию:

function isNullOrUndefined<T>(obj?: T | null): boolean { 
    // null == undefined so this is true if obj = null or obj = undefined 
    return obj == null; 
} 
+1

Ответ OP намного лучше, так как он определяет охранник типа. Возврат 'boolean' не так полезен. Кроме того, необязательный параметр не имеет ничего общего с вопросом. –