首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在TypeScript中指示路径不可达

如何在TypeScript中指示路径不可达
EN

Stack Overflow用户
提问于 2017-06-10 05:48:03
回答 1查看 2.2K关注 0票数 5

我有一些Typescript代码,基本上看起来像这样

代码语言:javascript
复制
if( ... ) 
   result  = $(document.createElement("div")) ;
} else if( ... ) {
    result  = $(document.createElement("div")) ;
} else {
    assert.unreachable( "Unknown label in buildHTML.") ;
}
result.attr( "data-childNumber", childNumber.toString() ) ; 

assert.unreachable的返回类型为never

在最后一行显示的错误“变量‘结果’在被赋值之前被使用。”

在我看来,来自assert.unreachablenever结果应该告诉编译器没有从else部分出去的路径。

我知道我可以通过在else的末尾添加throw null;来抑制错误,但这似乎并不优雅。

unreachable的定义中也出现了类似的问题。它看起来像这样

代码语言:javascript
复制
export function unreachable( message? : string ) : never {
    if( message===undefined ) message = "Unreachable code reached." ;
    else message = "Unreachable code reached: "+message ;
    raiseTheAlarm( message ) ;
}

其中,raiseTheAlarm的结果类型为never。在这种情况下,我得到了一个错误:“返回'never‘的函数不能有一个可到达的端点。”

我修复了这个问题,在调用raiseTheAlarm之前添加了一个return关键字。这看起来有点奇怪。(当然,调用之后的throw null;也可以工作。)

有没有更好的方法来告诉编译器代码中的某个点是不可访问的?

EN

回答 1

Stack Overflow用户

发布于 2017-06-10 18:55:09

至少有三种选择

(a)

代码语言:javascript
复制
else {
    return assert.unreachable( "Unknown label in buildHTML.") ;
}

(b) (来自@artem的答案)

代码语言:javascript
复制
else {
    result = assert.unreachable( "Unknown label in buildHTML.") ;
}

(c)

代码语言:javascript
复制
else {
    assert.unreachable( "Unknown label in buildHTML.") ;
    throw null ;
}

我选择了(a)项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44467145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档