【问题标题】:function parameters with different types in typescript打字稿中不同类型的函数参数
【发布时间】:2020-12-28 23:52:20
【问题描述】:

我正在编写一个小型 TypeScript 函数,它有一个 param 类型为 Data 或 number 的参数。

错误:类型“数字”上不存在属性“ID”|数据'

interface Data {
    id: number
}

function typescriptType(param: Data | number): void {

            let data;
            if (typeof param === object) {
                data = param.id;
            } else {
                data = param;
            }
    }

typescriptType({id : 1});
typescriptType(1);

【问题讨论】:

  • 问题是什么?错误告诉您,数字没有名为 id 的属性,因此您需要弄清楚您真正想要对数字输入做什么
  • 知道错误出现的确切行很有用

标签: javascript typescript function typescript-typings


【解决方案1】:

忘记在object 上添加引号

interface Data {
    id: number
}

function typescriptType(param: Data | number): void {
            let data;
            if (typeof param === 'object') {
                data = param.id;
            } else {
                data = param;
            }
    }

typescriptType({id : 1});
typescriptType(1);

【讨论】:

    【解决方案2】:

    您想将param 指定为对象类型,而number 不是对象类型(它是原始类型)。 TypeScript 在这里寻求一个共同点。联合中的两种类型都必须具有 id 属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-20
      • 2021-12-17
      • 2022-01-12
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2022-11-11
      • 2021-04-10
      相关资源
      最近更新 更多