728x90
์์ ๊ฐ์ด ์ธ๊ฐ์ ํ์ ๋ณ์นญ์ ๋์๋ค.
์ด๋ฅผ ํ ๋๋ก ์ฌ๋ฌ๊ฐ์ง ์คํ์ ํด๋ณผ ๊ฒ์ด๋ค.
ํ์ ๋ณ์นญ์ extends๋ผ๋ ๋ช ๋ น์ด๊ฐ ์๊ณ ์ธํฐ์น์ (&)๋ฅผ ์ด์ฉํด ํ์ฅํ๋ค.
type TreeNode = {
value: string;
};
type LeafNode = TreeNode & {
isLeaf: true;
};
type InnerNode = TreeNode & {
children: [TreeNode] | [TreeNode, TreeNode];
};
1.
let a: TreeNode = { value: "a" }; //ํต๊ณผ
let a1: TreeNode = { value: "a" , isLeaf: true};
~~~~~~~~~~~~~
2.
let b: LeafNode = { value: "b", isLeaf: true }; //ํต๊ณผ
let b_test1: LeafNode = {isLeaf: true };
~~~~~~~
let b_test2: LeafNode = { value: "b"};
~~~~~~~
let b_test3: LeafNode = { value: "b", isLeaf: true, children: [b] };
~~~~~~~~~~~~~
3.
let c_test1: InnerNode = { value: "c", children: [b] };
let c_test2: InnerNode = { value: "c" };
~~~~~~~
let c_test3: InnerNode = { children: [b] };
~~~~~~~
let c_test4: InnerNode = { value: "c", children: [b], isLeaf: true };
~~~~~~~~~~~~
<๊ฐ๋ฅํ ๊ฒ ๋ชจ์>
type TreeNode = {
value: string;
};
type LeafNode = TreeNode & {
isLeaf: true;
};
type InnerNode = TreeNode & {
children: [TreeNode] | [TreeNode, TreeNode];
};
let a: TreeNode = { value: "a" }; //ํต๊ณผ
let b: LeafNode = { value: "b", isLeaf: true }; //ํต๊ณผ
let c: InnerNode = { value: "c", children: [b] }; //ํต๊ณผ
728x90