๐ object(key:value) type, interface ์ ์ธํ๊ธฐ
TS
๋ฅผ ์ฌ์ฉํ๋ค๊ฐ string
, number
, boolean
, array
์ ๊ฐ์ ์๋ฃํ์๋ type
์ ์ ์ ์ธํ ์ ์์๋๋ฐ, ์ ๋
key:value
์ ๊ฐ์ object
๋ type
์ ์ด๋ป๊ฒ ์ ์ธํด์ผ ํ๋์ง ํท๊ฐ๋ ธ๋ค. ๋๋ ์ด๋๊น์ง key:value
ํํ์ object
๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํ๋ค.
interface PostType{
sort: string;
}
const post: PostType = {sort: "asc"}
console.log(post);
๐๐ฝ { sort: 'asc' }
ReactQuery
๋ฅผ ์ฌ์ฉํ์ฌ useInfiniteQuery
๋ฅผ ๊ตฌํํ๋ ๋์ค ํจ์ parameter
๋ก ๋ฐํ๋๋ key:value
ํํ์ธ post
๊ฐ์ key
๋ type
๋ง ์๊ณ ๊ฐ
์ ์ ํํ์ง ์์ ๋ ํน์ post
๊ฐ์ value
๋ type
๋ง ์๊ณ ๊ฐ
์ ์ ํํ์ง ์์ ๋, ํน์ ๋น๊ตฌ์กฐํ ๋น๋ฌธ๋ฒ(destructuring assignment)
์ ์ฌ์ฉํ์ ๋๋ type
์ ์ด๋ป๊ฒ ์ ์ธํด์ผํ๋์ง ๊ถ๊ธํ๋ค. ๊ทธ๋์ ๋ฐฐ์๋ณด์. how to declare object type!!
// post์ `key`๋ ์ ๋ชจ๋ฅด์ง๋ง `type`์ ์๊ณ ์์ ๋
type SortType = {[key in string]: string};
const post = {sort: "asc"};
const {sort} = post as SortType;
// post์ `key` ๊ฐ์ ๋ช ๊ฐ ์๊ณ ์์ ๋
type Keys = "sort" | "filter"
type SortType = {[key in Keys]: string};
const post = {sort: "asc"};
const {sort} = post as SortType;
// post์ `value` ๊ฐ์ ๋ช ๊ฐ ์๊ณ ์์ ๋
type Values = "asc" | "desc" | "id";
type SortType = {[key in string]: Values};
const post = {sort: "asc"};
const {sort} = post as SortType;
// post์ `key:value`๋ฅผ ๋๋ต์ ์ผ๋ก ์๊ณ ์์ ๋
type Keys = "sort" | "filter"
type Values = "asc" | "desc" | "id";
type SortType = {[key in Keys]: Values};
const post = {sort: "asc"};
const {sort} = post as SortType;
// post์ ์ ํํ `key:value` ๋ชจ๋ ํ์คํ ๊ฐ์ผ ๋
type SortType = {sort: string};
const post = {sort: "asc"};
const {sort} = post as SortType;
// arrayํํ๋ก return๋๋ post type ์ ์ธ
type PostObj = {[key in string]: string};
type PostType = Array<string | PostObj>
const post: PostType = ["usePosts", {sort: "asc"}];
์ง๊ธ๊น์ง ์์ฑํ ์ฝ๋๋ฅผ ํ ๋๋ก ์ดํด๋ณด๋ฉด ๋น๊ตฌ์กฐํ ๋น
์ type
์ ์ธ์ ๋ณ์ ์์น๊ฐ ์๋ ํ ๋นํ๋ ๊ฐ ๋ค์ as
ํํ๋ก ๋ถ์๋ค. ์ด๋ฅผ ํ๊ตญ๋ง๋ก ๋ค์ด ์บ์คํ
ํน์ ์์ด๋ก Type Assertions
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด์ ๊ด๋ จํ TypeScriptLang์ ๋์์๋ ์์ด๋ฅผ ๋ฒ์ญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธ์ ์ฝ์ ์ ์๋ค. ๋๋๋ก TS
๊ฐ ์ ์ ์๋ ๊ฐ์ ์ ํ์ ๋ํ ์ ๋ณด๊ฐ ์์ ๊ฒ์
๋๋ค. (...์ค๋ต...) ์ด๋ฌํ ์ํฉ์์ Type Assertions
์ ์ฌ์ฉํ์ฌ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ ํ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ํ, TypeScript Deep Dive
์๋ TypeScript
์์๋ ์์คํ
์ด ์ถ๋ก ๋ฐ ๋ถ์ํ ํ์
๋ด์ฉ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋๋ก ์ผ๋ง๋ ์ง ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ด๋ "ํ์
ํ๋ช
(type assertion)"์ด๋ผ ๋ถ๋ฆฌ๋ ๋ฉ์ปค๋์ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค. TypeScript์ ํ์
ํ๋ช
์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ปดํ์ผ๋ฌ์๊ฒ ๋ด๊ฐ ๋๋ณด๋ค ํ์
์ ๋ ์ ์๊ณ ์๊ณ , ๋์ ์ฃผ์ฅ์ ๋ํด ์์ฌํ์ง ๋ง๋ผ๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์ฆ, ๋ด๊ฐ ๋๋ณด๋ค ํ์ ์ ๋ ์ ์๊ณ ์์ผ๋๊น, ๋ด ๋ง๋๋ก ํด!๊ฐ ๋๋ค.
reference
๋๊ธ