【发布时间】:2016-11-01 02:06:18
【问题描述】:
我想在 TypeScript 中创建一个 toPlainObject() 函数并提出了这个工作示例:
function toPlainObject<S extends D, D>(source: S) {
return JSON.parse(JSON.stringify(source)) as D;
}
现在我可以像这样调用函数了:
interface ISample {}
class Sample implements ISample {}
let plain: ISample = toPlainObject<Sample, ISample>(new Sample());
现在的问题是:有没有一种方法可以声明toPlainObject,而不需要第一个泛型类型参数S extends D,方法是使用第一个参数类型(即S),这样我就可以调用函数了只是在做:
let plain: ISample = toPlainObject<ISample>(new Sample());
签名function toPlainObject<D>(source: S extends D) { ... } 确实不起作用并导致语法错误。
【问题讨论】:
标签: generics typescript type-inference generic-programming