ts写法请教,大佬在线否?

image.png

image.png
这种时候怎么办?需要分开写两个方法吗?

function test1(a: Type1 | Type2) {
}

function test2(a: Type1) {
}

方法 2 不能理解赋值给方法 1 吗?

追加 1

export interface ResCategoryLabel {
    categoryType: "genre" | "level";
    categoryId: number;
    categoryName: string;
}

export interface Major {
    id: number;
    name: string;
}

追加 2

在这个通用的组件里面定义俩个方法区分是可以
image.png
或者直接类型改成 any
image.png

虽然不报错了,但是这样作法合适吗?有其他好的解决方法吗?

阅读 1.6k
2 个回答

你的代码等效于以下代码

function test(index:number,label:Major | ResCategoryLabel){
    console.log(label)
}
function test2(index:number,label:Major){
     console.log(label)
}
const a:Major = {
    id:1,
    name:'pb'
}
//这里相当于你的onchange,它只接受 如下定义的callback
function fun1(callback:(index:number,label:Major | ResCategoryLabel)=>void){
    return callback(1,a)
}


fun1(test) // test(index:number,label:Major | ResCategoryLabel),参数类型完全一致,所以不报错 
fun1(test2)//出错 test2(index:number,label:Major) 参数类型不同,报错

image.png
单词写错了

logo
Microsoft
子站问答
访问
宣传栏