TypeScript -我应该如何写一个函数来匹配类型?



如何编写函数fn以匹配类型DescribableFunction

type DescribableFunction = {
description: string;
(arg: string): number;
new (someArg: number): string
};
function doSomething(fn: DescribableFunction) {
console.log(`${fn.description} returned ${fn('lorem')} or ${new fn(1)}`);
}
const fn: DescribableFunction = function (arg: string) {
}
doSomething(fn)

没有类型断言是不可能的。

由于历史原因,JavaScript中的一些构造函数可以用new关键字调用,也可以作为常规函数调用,例如DateArray

这些构造函数是内建的。不允许在没有类型断言的情况下构建这样的构造函数。但是,您可以在DescribableFunction中去掉new (someArg: number): string,只添加description属性:

type DescribableFunction = {
description: string;
(arg: string): number;
};
function doSomething(fn: DescribableFunction) {
console.log(`${fn.description} returned ${fn('lorem')} or ${new fn(1)}`);
}
const fn: DescribableFunction = function (arg: string) {
return 42
}
fn.description = ''
doSomething(fn)

在这里你可以找到更多关于函数静态属性的解释。

在这里你可以找到相关的问题/答案

注:请记住,您可以在纯js中创建具有类似行为的自定义构造函数(参见new.target)

最新更新