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 }