Должен ли я использовать JSLint или JSHint JavaScript проверки? [закрыто]

Мне нравится простота этого.

Number.isNaN(Number(value))

Вышеупомянутый обычный Javascript, но я использую его в сочетании с типом типа typeguard для проверки интеллектуального типа. Это очень полезно для компилятора typescript, чтобы дать вам правильную intellisense и никаких ошибок типа.

Типпечатные типы typecript

isNotNumber(value: string | number): value is string {
    return Number.isNaN(Number(this.smartImageWidth));
}
isNumber(value: string | number): value is number {
    return Number.isNaN(Number(this.smartImageWidth)) === false;
}

Допустим, у вас есть свойство width, которое является number | string. Вы можете захотеть сделать логику на основе того, является ли она строкой.

var width: number|string;
width = "100vw";

if (isNotNumber(width)) 
{
    // the compiler knows that width here must be a string
    if (width.endsWith('vw')) 
    {
        // we have a 'width' such as 100vw
    } 
}
else 
{
    // the compiler is smart and knows width here must be number
    var doubleWidth = width * 2;    
}

Типная защита достаточно умна, чтобы ограничить тип width внутри оператора if ТОЛЬКО string , Это позволяет компилятору разрешить width.endsWith(...), который он не допустил бы, если бы этот тип был string | number.

Вы можете вызвать тип защиты, какой вы хотите isNotNumber, isNumber, isString, isNotString, но я думаю, что isString неоднозначно и труднее читать.

447
задан Vikrant 21 December 2016 в 11:30
поделиться