ts中怎么对ajax返回的json做强类型检查

假如,ajax返回的数据是{id:1}

我思考的是定义一个接口,如

interface IData{
    id: number
}

然后符给返回数据,如

$.ajax({
    ...
    success:(data)=>{
        let myData: IData = data
    }
    ...
})

但是这样做,只能起到在vscode中有提示,不能类型检查,比如我把interface中的number改成string,依然不会报错

我想要的结果是:类型和字段数都能一一的对应上,发挥interface的作用,请问怎么解决这个问题?

阅读 9.1k
4 个回答

其实typescript的强类型指是编译过程中,而非运行中。

tsconfig中include你自己写的.d.ts,然后在tsc执行编译的时候会进行相关提示

ts没有运行时的类型检查。prop-types可以做运行时检查但要自己写PropType。

我不知道有能从interface生成PropType的方法: interface完全没有留到运行时。也许class+反射可以。

类型检查只有编码、ts编译阶段有用,js是弱类型的,不能类型检测

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