我想创建一种特定功能或any
的类型,但Function
除外。如果该值为函数打字稿,而该函数的类型不正确,则该脚本应出错,应允许使用其他任何值。
我的函数类型:
type MyFunction<T> = (item: T, index: number) => boolean;
我尝试了以下三种方法,但没有成功:
type A<T> = MyFunction<T> | any;
interface B<T> { [ key: string ]: A<T> }
type A<T> = Exclude<any, Function> | MyFunction<T>;
interface B<T> { [ key: string ]: A<T> }
type A<C, T> = {
[ K in keyof C ]: C[K] extends Function ? MyFunction<T> : C[K];
}
type B<T> = A<{ [ key: string ]: any }, T>;
示例:
const b: B<string> = {
'foo': (
item, // should be string but is implicit any
index // should be number but is implicit any
) => 'bar' // should error if return type is not boolean
};
有没有办法做到这一点?