嗯,我知道 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;
}
1
VDimos 2019-09-25 11:27:31 +08:00 via Android 1
不行,这个得手动检验数据类型,有专门的包可以做这个事儿。
|
2
VDimos 2019-09-25 11:27:55 +08:00 via Android 1
用 json schema 也可以的
|
3
momocraft 2019-09-25 11:29:58 +08:00 1
选项是没有的,有 io-ts 之类的包可以用
总体来说在 tsc 开放 plugin API 前要么手动写 PropType,要么用人 fork 的 tsc |
4
Austaras 2019-09-25 14:10:10 +08:00
ls 说的对,还可以用不靠谱的插件
|
5
HowardTang 2019-09-25 14:21:33 +08:00 1
我怎麽感覺這是後端需要做的東西呢?
如果數據類型錯,他們就不應該返回給你吧 |
6
ruandao OP @HowardTang 对于接口应该是不信任的, 然后,如果有错误,需要马上爆发。。。不要等过了 n 个调用后才莫名其妙的出现
|
7
LancerComet 2019-09-25 15:39:15 +08:00
如果只说这个场景,目前个人做法是让 deserializer 去处理属性映射和类型安全,之前仿照 Json.NET 做了一个切图用的,这样也有缺点,项目大了后需要定义不少 model: https://github.com/vuevert/Vert-Serializer
|