TS的类型判断

type testData = 1 | 2 | 3;
const num = 9;

// 怎么判断 变量num是不是符合 testData 类型呢

补充一下 : 为什么想要这个判断,就是有时候,可能需要的长见识  num 这个变量 是否是 testData 类型
    if(/*判断条件*/){
     console.log(11)
    }



enum testEnum {
    no = 5,
    yes = 10
}

interface TestInterface {
    pn: testEnum,
}

// TestInterface 中的的pn是什么类型

阅读 6.6k
2 个回答

第一个问题:
const num:testData = 9;
编辑器会自动判断num是否是testData类型

第二个问题:pn的类型是testEnum类型

这个问题有点意思,查了一下资料。

testData 可以用下面的方式判断

function isTestData(value: any): value is testData {
    return [1, 2, 3].indexOf(value) != -1;
}

enum typeof 是 object。

  1. 试了 typeof,发现typeof num -> "number",但是发现typeof 只返回 "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" 这些。(毕竟typescrpit只是中间语言,自定义类型也只能在语法检查时起效)
  2. instanceof 是针对 interface, class 使用的,type不支持

所以还是需要回归js的本质,只能通过一些特征去判断自定义类型

https://www.typescriptlang.or...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题