interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
function getCounter(): Counter {
let counter = <Counter>function (start: number) { };
counter.interval = 123;
counter.reset = function () { };
return counter;
}
为什么上面接口规定 counter 函数返回string,但实际上counter 函数并没有返回,不报错
interface Counter {
(start: number): void;
interval: number;
reset(): void;
}
function getCounter(): Counter {
let counter = <Counter>function (start: number) { return '12'};
counter.interval = 123;
counter.reset = function () { };
return counter;
}
但是 我将接口和函数返回调换了一下就报错了
你这里加了
<Counter>
当然不对了,这个意思就是你已经显示地认为后面的function (start: number) { return '12'};
符合函数的类型约束了,你这里去掉的话,就会有相应的错误提示了。我猜你是借鉴了其他静态语言的语法?比如 java,这里算是坑吧,typescript 并没有强制转型的概念,因此没有错误也是正常的。