如何创建特定功能的类型或功能以外的任何其他功能

时间:2019-05-21 14:58:51

标签: typescript

我想创建一种特定功能或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
};

有没有办法做到这一点?

0 个答案:

没有答案