Typescript 如何通过Partial创建可扩展类型而不复制代码?
让我们看看下面的代码:Typescript 如何通过Partial创建可扩展类型而不复制代码?,typescript,Typescript,让我们看看下面的代码: interface A { a: number; } // doesn't work - "An interface may only extend a class or another interface." // interface AOpt extends Partial<A> {} // does work, but leads to code duplication :( interface AOpt { a?: number;
interface A {
a: number;
}
// doesn't work - "An interface may only extend a class or another interface."
// interface AOpt extends Partial<A> {}
// does work, but leads to code duplication :(
interface AOpt {
a?: number;
}
interface B extends AOpt {
b: number;
}
接口A{
a:数字;
}
//不工作-“一个接口只能扩展一个类或另一个接口。”
//接口AOpt扩展部分{}
//确实有效,但会导致代码重复:(
接口AOpt{
a:数字;
}
接口B扩展了AOpt{
b:数字;
}
如何以
部分
与类型
配合使用的方式创建接口,但它可以通过接口进行扩展?我们的需求似乎将在下一版本的TypeScript中得到满足,其中包括pull请求:
type T1={a:number};
类型T2=T1&{b:string};
// ...
类型name=T&{name:string};
接口N1扩展名为{x:string}/{a:number,name:string,x:string}
接口N2扩展名为{x:string}/{a:number,b:string,name:string,x:string}
接口P1扩展部分{x:string}/{a?:number |未定义,x:string}
在中,它出现在标签“改进了对“mixin”模式的支持”下,该标签已选中。因此,它应该在
typescript@next
这是不可能的,但我需要类似的东西(使用Readonly
)但这种ofc并不能解决实际问题
type T1 = { a: number };
type T2 = T1 & { b: string };
// ...
type Named<T> = T & { name: string };
interface N1 extends Named<T1> { x: string } // { a: number, name: string, x: string }
interface N2 extends Named<T2> { x: string } // { a: number, b: string, name: string, x: string }
interface P1 extends Partial<T1> { x: string } // { a?: number | undefined, x: string }