标注返回值

因为 Vue 的声明文件天生就具有循环性,TypeScript 可能在推断某个方法的类型的时候存在困难。因此,你可能需要在 rendercomputed 里的方法上标注返回值。

  1. import Vue, { VNode } from 'vue'
  2. const Component = Vue.extend({
  3. data () {
  4. return {
  5. msg: 'Hello'
  6. }
  7. },
  8. methods: {
  9. // 需要标注有 `this` 参与运算的返回值类型
  10. greet (): string {
  11. return this.msg + ' world'
  12. }
  13. },
  14. computed: {
  15. // 需要标注
  16. greeting(): string {
  17. return this.greet() + '!'
  18. }
  19. },
  20. // `createElement` 是可推导的,但是 `render` 需要返回值类型
  21. render (createElement): VNode {
  22. return createElement('div', this.greeting)
  23. }
  24. })

如果你发现类型推导或成员补齐不工作了,标注某个方法也许可以帮助你解决这个问题。使用 —noImplicitAny 选项将会帮助你找到这些未标注的方法。