Javascript typescript中不同类型的函数参数

Javascript typescript中不同类型的函数参数,javascript,typescript,function,typescript-typings,Javascript,Typescript,Function,Typescript Typings,我正在编写一个小的TypeScript函数,它有一个类型数据或数字的param参数 错误:类型“number | Data”上不存在属性“id” interface Data { id: number } function typescriptType(param: Data | number): void { let data; if (typeof param === object) { data =

我正在编写一个小的TypeScript函数,它有一个类型数据或数字的
param
参数

错误:类型“number | Data”上不存在属性“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);

您希望将
param
指定为对象类型,并且
number
不是对象类型(它是一个基元)。TypeScript在这里寻找一个共同点;联合中的两种类型都必须具有
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
的属性,因此您需要弄清楚您真正想要对数字输入做什么。了解错误出现的确切行非常有用