我有以下代码:
interface F {
(): string;
a(): number;
}
function f() {
return '3';
}
f['a'] = function () {
return 3;
};然后我想给一个变量赋值一个函数。我可以这样做:
let z = <F>f; // works或者像这样:
let y: F = f; // doesn't work有什么关系呢?
发布于 2017-01-25 18:27:33
根本的问题是,f只是一个函数,您试图将它当作接口的一个实例来使用。(我认为这很好,它与接口兼容,只是语法问题。)
这很好:
let z = <F>f; // works...because --它使用强制转换告诉TypeScript,尽管f只是TypeScript所知道的一个函数,但您更了解它,并且它与接口F兼容。然后,类型推断起作用,并将类型F分配给z,因为分配的右侧是F类型。
但这一点:
let y: F = f; // doesn't work不工作,因为它将y声明为F类型,然后将函数分配给它。该函数不是F类型的,因此分配失败。
发布于 2017-01-25 18:32:34
https://stackoverflow.com/questions/41858843
复制相似问题