类型检查字符串,而不是使用instanceof

时间:2018-07-04 06:52:34

标签: node.js typescript tcp typescript-typings tsc

说我有一个执行TCP的库,响应可能会有所不同,有些响应表示错误。

使用Error对象没有太大意义,因为这很昂贵,但是堆栈跟踪与原始请求也没有任何关系,因为错误将在异步发生。 / p>

所以我能想到的最好的事情是一个简单的字符串,例如:

const makeRequest = function(err, result){

    if(err && err.code === 'Request timeout'){

    }

    if(err && err.code === 'Unauthorized'){

    }
};

如何允许用户使用TypeScript输入检查字符串?

1 个答案:

答案 0 :(得分:2)

您可以使用字符串文字字符串来提供对错误代码的类型检查(以及对错误代码的良好代码完成支持)。

foreach($code as $v){
    $pos = strpos($v, "|");
$first = substr($v,...?

如果每种类型的错误都有额外的信息要提供,您还可以将字符串文字类型与已区分的并集组合在一起:

interface CustomError {
    code:'Request timeout' | 'Unauthorized'
}

const makeRequest = function(err : CustomError | null, result : any){
    if(err && err.code === 'Not an error'){ // This would be an error

    }
    if(err && err.code === 'Request timeout'){

    }

    if(err && err.code === 'Unauthorized'){

    }
};