技术解析

typescript 如何生成 运行时 的类型检查
0
2021-08-26 00:52:55
idczone

嗯,我知道 typescript 在编译成 js 的时候,把类型都去除了

那么有没有什么编译选项,可以自动生成一个 类型检查 函数,检查输入的 any 类型的对象是不是符合某个指定接口

主要是用在 http 返回的时候,希望如果不是指定的类型,里面报错之类的

const mapData2Display = (data: any): IDisplay => ({
	...data,
    id: {displayId: data.pk},
});

譬如上面这样一个函数,如果能够变成

const mapData2Display = (data: any): IDisplay => {
	const obj = {
    	...data,
	    id: {displayId: data.pk},
    }
    generate_isType_or_throwErr(obj, IDisplay)
    return obj;
}

不行,这个得手动检验数据类型,有专门的包可以做这个事儿。

用 json schema 也可以的

选项是没有的,有 io-ts 之类的包可以用
总体来说在 tsc 开放 plugin API 前要么手动写 PropType,要么用人 fork 的 tsc

ls 说的对,还可以用不靠谱的插件

我怎麽感覺這是後端需要做的東西呢?
如果數據類型錯,他們就不應該返回給你吧

对于接口应该是不信任的, 然后,如果有错误,需要马上爆发。。。不要等过了 n 个调用后才莫名其妙的出现

如果只说这个场景,目前个人做法是让 deserializer 去处理属性映射和类型安全,之前仿照 Json.NET 做了一个切图用的,这样也有缺点,项目大了后需要定义不少 model: https://github.com/vuevert/Vert-Serializer

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服