Typescript 在这种情况下,如何理解呼叫签名?
我是个打字新手,对电话签名很困惑。 在下面的代码中,有一个接口计数器,它被假定为函数类型,并具有一些额外的属性interval和reset。Typescript 在这种情况下,如何理解呼叫签名?,typescript,Typescript,我是个打字新手,对电话签名很困惑。 在下面的代码中,有一个接口计数器,它被假定为函数类型,并具有一些额外的属性interval和reset。 我不明白这种说法: let counter=function(start:number){}作为计数器 变量计数器是一个未定义的函数返回,那么我们在这里使用类型断言,那么函数计数器有一个计数器类型? 在计数器接口中,函数有一个参数start和return字符串,但对于 let counter=function(start:number){},此函数声明返回
我不明白这种说法:
let counter=function(start:number){}作为计数器代码>
变量计数器是一个未定义的函数返回,那么我们在这里使用类型断言,那么函数计数器有一个计数器类型?
在计数器接口中,函数有一个参数start和return字符串,但对于
let counter=function(start:number){}
,此函数声明返回未定义,但编译器不会抛出任何错误,有人能给我解释一下吗
interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
function getCounter(): Counter {
let counter = function (start: number) {} as Counter;
counter.interval = 123;
counter.reset = function () {};
return counter;
}
let c = getCounter();c(10);c.reset();c.interval = 5.0;
Typescript并不完美,因为实际上很难将静态类型分层到这样一种动态语言上
这里的问题是,不能在单个语句中创建同时具有自定义属性的函数。因此,此处作为计数器的类型转换告诉typescript“这可能不是类型安全的,但无论如何请将此函数视为计数器。”
这样,您就可以右键访问仅在假定该函数为计数器时才存在的属性。但是,这也可能掩盖其他类型错误,例如函数的返回类型错误
总之,没有抛出类型错误的原因是,当您使用as
时,您告诉typescript您比编译器更了解,因此一些类型错误被抑制。我不擅长Python,但是(start:number)
我觉得您可能需要在数字如下所示的位置放置一个数字(开始:1)
。这是您目前使用的脚本吗?您是否有原始布局和编辑版本。您能否举例说明您的目标是什么1.欢迎使用SO。2.请以文本形式而不是图像形式发布代码。(如果是TS,最好添加游乐场链接)3.计数器是一个调用签名。请参见4.提供的代码尝试使用类型断言创建计数器的输入。5.由于初始函数返回未定义而不是字符串,因此无法创建计数器。6.错误被类型断言掩盖。“但编译器不会抛出任何错误”--as
类型强制转换不是绝对类型安全的,在某些情况下(如这样),它可能会导致问题。(as type
)有一些用例。这不是一个。您应该创建一个实现接口的类,并创建该类的一个实例,而不使用类型断言。“这可能不是类型安全的,但无论如何请将此函数视为计数器。”这很有趣。如何将未定义的函数返回视为计数器的实例?因此,使用as关键字,typescript会忽略错误,但变量计数器仍然是未定义的函数返回?