In TypeScript, 2.2...
Let's say I have a Person type:
interface Person {
name: string;
hometown: string;
nickname: string;
}
And I'd like to create a function that returns a Person, but doesn't require a nickname:
function makePerson(input: ???): Person {
return {...input, nickname: input.nickname || input.name};
}
の型はどうあるべきでしょうか? がオプションであることinput
を除いて と同一の型を動的に指定する方法を探しています( )。 これまでに私が思いついた最も近いものは次のとおりです。Person
nickname
nickname?: string | undefined
type MakePersonInput = Partial<Person> & {
name: string;
hometown: string;
}
しかし、それは私が探しているものではありません。なぜなら、すべてのタイプを指定しなければならないからです。必須オプションのものの代わりに。
ベストアンサー1
一部のキーのみを部分的に変更するなど、このような操作も行えます。
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
interface Person {
name: string;
hometown: string;
nickname: string;
}
type MakePersonInput = PartialBy<Person, 'nickname'>