Typescript: take a type and return a union type in a generic interface -
imagine simple collectionstore has methods creating , updating record. create() accepts set of attributes , returns same set id property added. update accepts set of same structure requires id property defined.
how express in typescript create() function accepts type t , returns t & {id: string} ?
i expect pattern expressed that:
interface collectionstore<t> { updaterecord(t & {id: string}): void; createrecord(t): t & {id: string}; } however code above isn't valid. please =)
you're right in how use union type, failed provide names functions params why error, should be:
interface collectionstore<t> { updaterecord(record: t & { id: string }): void; createrecord(record: t): t & { id: string }; } and then:
interface myrecord { key: string; } let a: collectionstore<myrecord> = ...; a.updaterecord({ key: "key", id: "id" }); a.createrecord({ key: "key" }); another option have have base interface records in id property optional:
interface record { id?: string; } interface collectionstore<t extends record> { updaterecord(record: t): void; createrecord(record: t): t; } but lose ability enforce updaterecord returns object id.
Comments
Post a Comment