2017-01-23 5 views
2

は、以下のコードてみましょう:typeで動作Partial方法でインターフェイスを作成する方法コードを複製せずにPartial経由で拡張可能な型を作成するには?

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

を、しかしそれは、拡張可能なインタフェースによってでしょうか?

+0

似たようなものが必要です( 'Readonly <>'で)。 – Paleo

答えて

1

それは私たちのニーズは、プルリクエスト"Allow deriving from object and intersection types"で、活字体の次のリリースでカバーされるようだ:ミックスイン「パターン 『』のサポートの向上」the roadmap

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 } 

、それはラベルの下に表示され、そのチェックされます。したがって、それは[email protected]で利用できるはずです。

関連する問題