반응형
📝Json Interface 구현 및 라이브러리 타입 재정의
interface ITodo {
id: number;
text: string;
}
interface IToDoState {
[key: string]: ITodo[];
}
const toDoState:IToDoState = {
"To Do": [{id:1 , text:"To Do!!!"}],
Doing: [{id:2 , text:"Doing!!!"}],
Done: [{id:3 , text:"Done!!!"}],
};
/** ----------------------------------- **/
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
let x = { a: 1, b: 2, c: 3, d: 4 };
출처: https://inpa.tistory.com/entry/TS-📘-타입스크립트-Generic-타입-정복하기 [Inpa Dev 👨💻:티스토리]
toDoState를 보면 Json형식을 가지고 있고 “키”는 무조건 String이며 “값”은 ITodo[]입니다.
[key: string] → 여러개의 key를 가진다
ITodo[] → ITodo의 Interface가 여러개를 가진다
declare module "iron-session" {
interface IronSessionData {
user?: {
id: number;
};
}
}
만약에 라이브러리에 타입스크립트가 적용 안 된 라이브러리라면 어떻게 해야할까요? 타입스크립트로 프로젝트를 만든 경우 타입이 지정되지 않아 정상 동작하지 않게 되는 문제가 생기게 됩니다 이러한 경우 서드파트 및 라이브러리에 대한 타입선언을 우리가 직접적으로 해줘야합니다 이러한 선언들은 보통 .d.ts파일에다가 관리를 합니다
📝Flatten
const a = {
a : "key 'a'",
b : {
aa : "key 'b.aa'",
bb : "key 'b.bb'",
},
c : {
aa : {
aaa : "key 'c.aa.aaa'",
bbb : "key 'c.aa.bbb'",
}
},
}
const a = {
"a" : "key 'a'",
"b.aa" : "key 'b.aa'",
"b.bb" : "key 'b.bb'",
"c.aa.aaa" : "key 'c.aa.aaa'"
"c.aa.bbb" : "key 'c.aa.bbb'"
}
깊이가 1 이상인 object들을 일정한 키 생성 규칙에 따라 깊이가 1로 고정된 오브젝트로 전환하는 기능
🔗 참고 및 출처
반응형