typescript接口问题

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

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

阅读 2.1k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进