interface User {
id: number;
name: string;
age: number;
gender: "m" | "f";
}
type UserKey = keyof User;
const uk:UserKey = "age"
=> js Object.keys와 비슷한듯
interface User {
id: number;
name: string;
age: number;
gender: "m" | "f";
}
// interface User {
// id?: number;
// name?: string;
// age?: number;
// gender?: "m" | "f";
// }
let admin: Partial<User> = {
id: 1,
name: "Bob",
}
=> 모든걸 optinal로 바꿔줌
interface User {
id: number;
name: string;
age?: number;
gender: "m" | "f";
}
// interface User {
// id: number;
// name: string;
// age: number;
// gender: "m" | "f";
// }
let admin: Required<User> = {
id: 1,
name: "Bob",
age: 1,
gender: "m",
}
type Grade = "1" | "2" | "3" | "4";
type Score = "A" | "B" | "C" | "D";
const score: Record<Grade, Score> = {
1: "A",
2: "C",
3: "B",
4: "D",
};
=> Type을 변수로 저장해서 쉽게 관리하면서 쓸 수 있음
interface User {
id: number;
name: string;
age: number;
}
function isValid(user: User) {
const result: Record<keyof User, boolean> = {
id: user.id>0,
name: user.name !== "",
age: user.age > 0,
};
return result;
}
let user: User = {
id: 1,
name: 'ts',
age: 1,
}
console.log(isValid(user));
=> valid에도 이렇게 활용 가능
=> 오. 좋네 생육기록 만들 때, 활용하면 좋을듯
=> 실제로 react form이 이런 형식이였던 것 같은
interface User {
id: number;
name: string;
age: number;
gender: 'M' | 'W';
}
const admin: Pick<User, "id" | "name"> = {
id: 0,
name: "Bob",
}
interface User {
id: number;
name: string;
age: number;
gender: 'M' | 'W';
}
const admin: Omit<User, "age" | "gender"> = {
id: 0,
name: "Bob",
}
=> Pick과 반대로 얘네들 빼고
type T1 = string | number | boolean;
type T2 = Exclude<T1, number | string>;
type T1 = string | null | undefined | void;
type T2 = NonNullable<T1>;