gpt4 book ai didi

typescript 真的不检查函数类型吗?

转载 作者:行者123 更新时间:2023-12-05 01:02:45 25 4
gpt4 key购买 nike

给出下面的代码,类型脚本编译器只是不引发任何错误,所以它只是不检查函数的参数类型?

var mySearch3:  (source: Person, subString: string)=> boolean  = 
function() {return true;}

最佳答案

TypeScript 尊重您可以忽略传递的参数这一事实。

当您定义了一个函数时,任何实现都必须通过具有正确类型的参数或省略该参数来兼容。

调用函数时,您必须提供所有必需的参数(非可选参数且没有默认值)。

让我们使用这个接口(interface)来做一些例子,这个接口(interface)用于一个接受字符串和数字的函数:

interface Example {
(name: string, age: number) : string;
}

以下所有功能都兼容:

var a: Example = function() { return 'Hello'; };
var b: Example = function(name: string) { return 'Hello ' + name; };
var c: Example = function(n: string, a: number) { return 'Hello ' + n + ' you are ' + a; };

每个都是兼容的,因为它要么指定正确类型的参数,要么省略它。这样做的关键是它们都必须以相同的方式调用

当我调用这些函数时,我必须指定这两个参数,即使它们不使用它们。这允许函数更改其实现,而不会影响依赖公共(public)合约的调用者(它需要传递两个参数)。

a('Rod', 50);
b('Jane', 50);
c('Freddy', 50);

现在让我们看看错误案例。

功能:

// The parameters are not compatible.
var d: Example = function(special: boolean) { return 'Hello';}

函数调用:

// You haven't passed the args
a();
a('Rod');

// Args are wrong type
a(50, 'Rod');
a('Rod', true);

// Too many args
a('Rod', 50, true);

关于 typescript 真的不检查函数类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252843/

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