作者回复: 需要注意两点: 1)函数的参数和返回值要区分别约束 2)onceFunction 返回的函数可能会返回 void 下面的实现请参考: function onceFunction<T extends any[], U>(fn: (...args: T) => U): (...args: T) => U | void { let once = true return (...args) => { if (once) { once = false if (fn instanceof Function) { return fn(...args) } } } }
作者回复: Text接口在 lib.dom.d.ts 中已被预定义,换个名字就可以了
作者回复: 仍然可以,这样写 class Log<T, D>