myFunc
可以采用string
或number
,但由于参数定义为T,因此在传递字符串时会出现错误。
interface Props<T> {
items: T[],
onValueChange: (vals: T[]) => void;
}
export const myComponent = <T extends string | number>(props: Props<T>) => {
const {
items = [],
onValueChange
} = props;
const myFunc = (item: T) => {
//do something
console.log(item);
onValueChange([item])
}
items.map(item => myFunc(item));
myFunc('test');
}
错误
Argument of type 'string' is not assignable to parameter of type 'T'.
'string' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'string | number'.
如何解决这个问题?
查看:TSPlayground
2条答案
按热度按时间jjhzyzn01#
另一种方式:
mftmpeh82#
如果它适合您的情况,您可以使类型约束更严格一些:
playground link