![](/img/trans.png)
[英]Typescript: define the type of a parameter of a function as a function with generics
[英]In TypeScript, generics parameter before function
我已经定义了这样的接口A
:
interface A {
(): any;
b: any;
};
但是,定义一个与此接口兼容的变量并不容易。
我尝试过:
var a: A = function () { console.log('This is a function'); }
a.b = 'This is a field';
由于Property 'b' is missing in type '() => void'
因此此代码段失败。 我认为这是合理的,因为在定义a
时没有b
字段。
然后我尝试了这个:
var a: A = <A> function () { console.log('This is a function'); }
a.b = 'This is a field';
这行得通,但我不知道这个<A> function ...
是什么<A> function ...
语法是什么。
如果有人可以帮助,那就太好了。 我已经搜索了官方文档中的每个角落。
谢谢。
var a: A = <A> function () ...
在这里, <A>
不是泛型,而是强制类型转换(您可以在末尾写as A
)。 原始语句(缺少强制转换)的问题在于,您正在为变量a: A
分配不带属性b
a: A
(一个函数仅满足(): any
声明)。 通过强制转换,您可以断言您的函数确实具有(或将具有)该属性。
您也可以通过将b
定义为以下选项来使其成为可选的:
b?: any;
在这种情况下,您不需要强制转换,但是我想说这是对可选选项的轻微滥用,我认为它更适合于选项对象(用作参数)。
请注意,即使语言允许,为TypeScript中的函数分配属性也是错误的做法(这就是为什么您会遇到麻烦)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.