如何告诉TypeScript函数修改其父作用域中的值?

时间:2017-11-07 03:42:53

标签: typescript typescript-typings

因此,在某些情况下,TypeScript会在if语句中自动减少值的类型空间。这非常有用。但是我经常处理这样一个问题:如果调用一个函数来修改它所赢得的值,那么它将扩大类型空间。

以下是该问题的简化示例:

function example() {
    let val = "foo";
    function modifyVal() {
        val = "bar";
    }
    if(val == "foo") {
        //typescript knows that val must be the unit type "foo"
        modifyVal(); //this changes it's value 
        //typescript still thinks that val == "foo" and thinks it
        //shouldn't be comparable to "bar"  
        if(val == "bar") {

        }
    }
}

是否有一些简单的方法可以禁用此功能?或者让编译器识别val被修改。目前我正在使用val as T

我使用的是版本2.7.0-dev.20171104。但是,该行为也会显示在在线游乐场https://www.typescriptlang.org/play/

编辑:我刚检查过这也是修改状态的类和函数的问题。

0 个答案:

没有答案