0
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;
}

但是 我将接口和函数返回调换了一下就报错了

2018-12-07 提问

1 个回答

0

已采纳

你这里加了 <Counter> 当然不对了,这个意思就是你已经显示地认为后面的 function (start: number) { return '12'}; 符合函数的类型约束了,你这里去掉的话,就会有相应的错误提示了。

我猜你是借鉴了其他静态语言的语法?比如 java,这里算是坑吧,typescript 并没有强制转型的概念,因此没有错误也是正常的。

你可能感兴趣的

推广链接