版本
2.6.14
复现链接
复现步骤
使用 vue create
创建一个 Vue 应用,无论是 2.x 还是 3.x 都可以,只要它是 TypeScript 并且使用了对象风格的组件语法。然后前往 HelloWorld.vue
,在 props 定义的下方粘贴以下代码:
data (): { hellStringType: string, hellNumberType: number, hellInvalid: string} {
debugger;
return {
hellStringType: this.getNumber(),
// should fail due to field type and return type not matching
hellNumberType: this.getNumber(),
// should fail due to there being no such function
hellInvalid: this.buildSomethingElse(),
}
},
methods: {
getNumber (): number {
return 42
}
}
预期结果
方法调用的类型推断应该正常工作,因此编译应该失败。
实际发生的情况
类型推断不起作用,无效的代码可以正常编译。类型推断仅对 props 有效。在浏览器中运行带有调试语句的代码时,可以访问到调用的方法。
3条答案
按热度按时间tcomlyy61#
我也有这个问题。
xzlaal3s2#
我遇到了同样的问题
我有这样的接口来描述数据
在这种情况下,TypeScript会高亮显示"handler"字段的错误类型
如果我将其中一个"handler"字段更改为预期的类型,只有错误的字段会被高亮。这符合预期的行为
但是如果我将一个函数传递给其中一个字段,并将第二个字段保留为错误的类型,那么这两个字段都会被认为是正确的
如果将函数设置为回调,那么类型检查就没问题了
ee7vknir3#
可以看看这个demo,好像ts是会有这个问题