gpt4 book ai didi

typescript - let f :F = f` and `let f = f` 有什么区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:02 24 4
gpt4 key购买 nike

我有以下代码:

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

有什么区别?

最佳答案

根本问题是 f 只是一个函数,而您正试图将它当作接口(interface)实例来使用。 (而且我认为很好,它与界面兼容,只是语法问题。)

这很好:

let z = <F>f; // works

...因为它使用强制转换告诉 TypeScript 虽然 f 只是 TypeScript 所知道的一个函数,但你知道得更多并且它与接口(interface) F。然后类型推断开始发挥作用,并将类型 F 分配给 z,因为分配的右侧是类型 F

但是这个:

let y: F = f; // doesn't work

...不起作用,因为它将 y 声明为 F 类型,然后为其分配一个函数。该函数不是 F 类型,因此赋值失败。

关于typescript - let f :F = f` and `let f = <F>f` 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41858843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com