[Typescript] ๊ตฌ์กฐ์  ํƒ€์ดํ•‘๊ณผ ๋• ํƒ€์ดํ•‘
์›น (WEB)/๊ณต๋ถ€ 2023. 4. 16. 19:58

๐Ÿค” ๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ๋˜ Duck typing๊ณผ Typescript ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์˜ ์ฐจ์ด๋ฅผ ์ธ์ง€ํ•˜๊ณ  ํ•œ๊ณ„๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. Duck typing์ด๋ž€ “๋งŒ์•ฝ ์–ด๋–ค ์ƒˆ๊ฐ€ ์˜ค๋ฆฌ์ฒ˜๋Ÿผ ๊ฑท๊ณ , ํ—ค์—„์น˜๊ณ , ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฌ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋‚ธ๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ ์ƒˆ๋ฅผ ์˜ค๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ด๋‹ค.” ๋ผ๋Š” ๋ง์—์„œ ํƒ„์ƒํ•˜์˜€์œผ๋ฉฐ, ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋Ÿฐํƒ€์ž„ ์‹œ ๊ฐ์ฒด์˜ ํ–‰์œ„์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํƒ€์ž… ์ˆ˜์šฉ์„ฑ์„ ์ฒดํฌํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. type Person = { name: string, age: number, }; const personA = { name: 'ํฌ์€', age: 27, }; const duckA = { name: '์˜ค๋ฆฌ', age: 2, }; const person: Person = duckA; // it's okay ํƒ€์ž…..

Javascript ๊ธฐ๋ณธ :: declare (Typescript์—์„œ type ์—†์„ ๋•Œ)
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 22. 14:15

๋งŒ์ผ Typescript๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ์ค‘์— ์•„์ฃผ ์ž˜ ์ž‘์„ฑ๋œ JS ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์™€์„œ ์“ฐ๊ณ ์ž ํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ๋ชจ๋“ˆ ๋‚ด์˜ ํ•จ์ˆ˜๋Š” typescript๋กœ ์ •์˜๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. ๋ชจ๋“ˆ์ด ํ•ด๋‹น ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์—๋„ type์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š์•„์„œ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ํ•ด์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด declare ํ‚ค์›Œ๋“œ๋ฅผ ์จ์„œ ์ •์˜ํ•ด๋‘๋ฉด type์ด ์ธ์‹๋˜์–ด typescript compiler๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. declare let module: any ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ "์ด๊ฑด ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค."๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

React context ์ฝ”๋“œ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ :: ๋ฆฌํŒฉํ† ๋ง
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 21. 14:11

๋ฌธ์ œ ์ƒํ™ฉ React context ์‚ฌ์šฉ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ ๊ตฌ์„ฑ์ด context ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜๋ก ๋ณต์žกํ•ด์ ธ์„œ ๋ฆฌํŒฉํ† ๋งํ•˜๋ ค ํ•œ๋‹ค. ๊ธฐ์กด ๊ตฌํ˜„ // ๊ตฌ์„ฑ const UserContext = createContext({}); const SignInContext = createContextvoid>(()=>{}); export const UserContextProvider = ({ children }) => { const [user, setUser] = useState(); const signIn = () => {}; return ( {children} ); } export function useUserState() { const context = useContext(UserContext); return c..

[ESLint] React hook + Typescript ํ”„๋กœ์ ํŠธ ์‹œ ์„ค์ •ํ•œ rule ๊ณต์œ 
์›น (WEB)/๊ณต๋ถ€ 2020. 12. 14. 14:01

module.exports = { 'parser': '@typescript-eslint/parser', 'plugins': ['@typescript-eslint'], 'env': { 'commonjs': true, 'browser': true, 'es2021': true, 'node' : true }, 'extends': [ 'airbnb', 'airbnb/hooks', 'plugin:@typescript-eslint/recommended' ], 'parserOptions': { 'project': './tsconfig.json', 'ecmaFeatures': { 'jsx': true, }, 'ecmaVersion': 12, 'sourceType': 'module', }, 'rules': { 'inden..

[Typescript] ๊ธฐ์กด React + js ํ”„๋กœ์ ํŠธ ts๋กœ ๋ฐ”๊พธ๊ธฐ
์›น (WEB)/๊ณต๋ถ€ 2020. 12. 14. 13:58

Typescript ์ฐธ๊ณ  : https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html (Typescript ๊ณต์‹ ์‚ฌ์ดํŠธ) ๋ฐฐ์šฐ๋Š” ์ด์œ  JS์—์„œ๋Š” Type์ด ๊ณ„์† ์ฒดํฌ๋˜์ง€ ์•Š๋Š”๋‹ค. 1. ์ด๋Š” ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜, hoisting, ๋ณต์žก์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์ƒ์˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฒ„๊ทธ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด typescript๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. hoisting : ๋Œ์–ด์˜ฌ๋ฆฐ๋‹ค๋Š” ๋œป. javascript์—์„œ ์„ ์–ธ๋ฌธ์„ ๋Œ์–ด์˜ฌ๋ ค ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ . typescript๋Š” ๋ณต์žกํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์—†์ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 2. ํ˜‘์—… ์‹œ์—๋‚˜ ์ถ”ํ›„์— ๋ณธ์ธ์ด ์ง  ์ฝ”๋“œ๋ฅผ ๋ณด์•˜์„ ๋•Œ ํƒ€์ž…์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ํ•˜๋‚˜..