我有一個功能:
const myFunc = (callback: (...params: any) => void, params: [any]): void => {
callback(...params);
};
//sample of using
myFunc((name: string) => { console.log(name) }, ["Mark"])
myFunc 接受回呼和引數。如何避免“任何”并提供兩種情況下的引數具有相同的型別?ps (callback: (...params: T) => void, params: [T]) = 不起作用...
uj5u.com熱心網友回復:
您可以使用可變元組型別:
const myFunc = <T extends unknown[]>(
callback: (...params: T) => void,
params: T
): void => {
callback(...params);
};
myFunc((name: string) => {}, ["Mark"]); // OK
myFunc((name: string, age: number) => {}, ["Mark", 23]); // OK
myFunc((name: string) => {}, ["Mark", 23]); // Error
myFunc((name: string, city: string) => {}, ["Mark", 23]); // Error
如果您知道所有引數都屬于同一型別,則可以使用該型別(例如string)而不是unknown.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484028.html
標籤:打字稿
