interface Match<Params extends { [K in keyof Params]?: string } = {}> {
params: Params;
isExact: boolean;
path: string;
url: string;
}
文档太散,查不到这种用法,请教
- extends后面的对象是什么意思
- 等号后面的空对象又是什么意思
interface Match<Params extends { [K in keyof Params]?: string } = {}> {
params: Params;
isExact: boolean;
path: string;
url: string;
}
文档太散,查不到这种用法,请教
如题✏️:interface Match<Params extends { [K in keyof Params]?: string } = {}>
这一行你可以理解为 Match
接收一个类型,他与泛型Params
目的一致, key
对应的v
是string
类型
看例子?:
此时你有一个这样的类型
type school = {
name: string,
className: string
}
// 我们可以这样使用
// 注意:题目中 [K in keyof Params]?: string 明确要求类型必须都为string类型,所以我们要满足它
let someVariv: Match<school> = {
params: {
name: 'jack ma',
className: '7年级一班'
},
inExact: true,
path: '../todo',
url: 'google'
}
拓展篇?:
可将 [K in keyof Params]?: string
的 string
改为any
,方便接收多元化参数没有类型传入时:params: Params
建议改为 非必选 params?: Params
如有不是,还请各位大佬指教啦?
extends后面的对象是什么意思
等号后面的空对象又是什么意思
Match
的时候不用定义泛型Params,而默认为 params: 为空对象类型