首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型保护是TypeScript能够在代码的不同部分为同一变量确定不同类型的唯一情况吗?

类型保护是TypeScript能够在代码的不同部分为同一变量确定不同类型的唯一情况吗?
EN

Stack Overflow用户
提问于 2022-04-02 02:47:35
回答 1查看 36关注 0票数 0

我的问题与这个问题有关:

如何实现“如果没有接口,添加必要的属性来匹配”?

我已经回答了这个问题,本质上我的思维模式是:

TypeScript有一对一的变量到类型的映射,并且无法跟踪‘第1行的变量A的类型是.,而第5行的变量A的类型是.’。

当然,这并不是严格意义上的,类型警卫TypeScript就是这样做的。

代码语言:javascript
复制
function usesSomeType(value: string | number) {


    value; //(parameter) value: string | number

    if (typeof value === 'string') {
        value; //(parameter) value: string

        // TypeScript knows that the type of value is different on lines 4 and on lines 9. 
    }

}

游乐场

我的问题是,类型保护是TypeScript有这种行为的唯一情况,还是存在其他情况?

EN

回答 1

Stack Overflow用户

发布于 2022-04-02 03:03:01

这是我所知道的另一种方式

代码语言:javascript
复制
enum objTypes {
  TYPE1 = 1,
  TYPE2 = 2
} 

class Object1 {
  objType: objTypes.TYPE1 = objTypes.TYPE1;
  x?: number;
}

class Object2 {
  objType: objTypes.TYPE2 = objTypes.TYPE2;
  y?: number;
} 

function useSomeFoo(bar: Object1 | Object2) {
  if (bar.objType === objTypes.TYPE1) {
    bar.x // accessible, no error.
    // bar.y // error
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71714483

复制
相关文章

相似问题

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