[英]Functions in typescript
为什么没有遗漏错误?
interface User {
// way 1
foo(): string;
foo2(x:number): string;
// way 2
normal: () => string;
normal2: (x:number) => string;
}
let user: User = {
// way 1
foo: () => '',
foo2: () => '', // why no error since x is missing
// way 2
normal: () => '',
normal2: () => '', // why no error since x is missing
};
看到这个 Typescript 游乐场
如果你调用(x:number)=>string
而不传入x
,你会得到An argument for 'x' was not provided.
错误。
但这不是你在做什么
您正在做的是将()=>string
分配给(x:number)=>string
,这是有效的。 当您将()=>string
分配给(x:number)=>string
时,编译器会询问: ()=>string
的行为是否与(x:number)=>string
相同?
即可以()=>string
接受一个number
并吐出一个string
,就像(x:number)=>string
一样吗?
答案是肯定的, ()=>string
在技术上可以接受任何数字,但只是忽略它,然后返回一个字符串,与它接受的数字无关。因此, ()=>string
可分配给(x:number)=>string
就像上面的答案似乎只有在没有 arguments 的情况下调用 function 时才能检测到它,我敢打赌这与 typescript 上下文类型有关(我也在学习这里)
Function 参数一次检查一个,每个对应参数 position 中的类型相互检查。 如果您根本不想指定类型,TypeScript 的上下文类型可以推断参数类型,因为 function 值直接分配给 SearchFunc 类型的变量。 在这里,我们的 function 表达式的返回类型也隐含在它返回的值typescript 手册中
interface Counter {
(start: number): string;
interval: number;
foo: (x:number) => string;
bar(x:number):string;
reset(): void;
}
function getCounter(): Counter {
let counter = function (s...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.