【问题标题】:Typescript vue Object is possibly 'null'打字稿vue对象可能是'null'
【发布时间】:2020-04-25 23:50:10
【问题描述】:

我已经检查了过去的问题,但找不到适合我的解决方案。

我正在使用 Vue Typescript:

export default Vue.extend({

    data() {
      return {
        ...
        selectedOrder: null,
      };
    },



approveOrder() {
        if(this.selectedOrder !== undefined && this.selectedOrder!==null && this.selectedOrder !== '') {
          let uri = 'http://localhost:8081/v1/order/approve/';

          uri = uri + this.selectedOrder.processInstanceId + '?approverId=' + this.getUser;

我得到的错误是:

164:21 Object is possibly 'null'.
    162 |           let uri = 'http://localhost:8081/v1/order/approve/';
    163 |
  > 164 |           uri = uri + this.selectedOrder.processInstanceId + '?approverId=' + this.getUser;
        |                     ^

【问题讨论】:

  • 为什么不selectedOrder: ''
  • 然后我得到错误:property 'processInstanceId' does not exist on type 'string'.
  • 也许是this.selectedOrder.processInstanceId.toString()
  • 不,还是Property 'processInstanceId' does not exist on type 'string'.

标签: typescript vue.js


【解决方案1】:

你没有使用打字稿的优势,我想你应该为你的selectedOrder对象设置任何类型,你可以尝试如下:

// selectedOrder.interface.ts
interface selectedOrder {
    processInstanceId: Number;
}

在你的 vue 组件中,你应该导入你的接口文件,然后:

// component.vue
export default Vue.extend({
    data() {
      return {
        ...
        selectedOrder: { processInstanceId: 0 } as selectedOrder,
      };
    },
    ...
})

 

【讨论】:

  • 我宁愿这样做:` selectedOrder: { processInstanceId: '',dendMessage: '' },` 那很糟糕吗?它也以这种方式工作
  • 如果你会这样做,那么就不需要 TS。
猜你喜欢
  • 1970-01-01
  • 2017-10-12
  • 2021-08-09
  • 2019-07-30
  • 2022-01-26
  • 1970-01-01
  • 2021-12-01
  • 2019-09-15
  • 2022-11-25
相关资源
最近更新 更多