2024-05-07.md
π‘DIL: μ΄νν°λΈ νμ μ€ν¬λ¦½νΈ
μ€ν°λ: μκ° CS, https://github.com/monthly-cs/2024-05-effective-typescript
μμ±μΌ: 2024-05-07
μμ±μ: dusunax
λ¬Έμ
- κ°λ
ν΄μ¦
- κ΅μ¬μ κ°λ μ κΈ°μ€μΌλ‘ O/X, λλ nμ§μ λ€ ν΄μ¦
- λ³ν μμ
- κ΅μ¬μ μμ λ₯Ό μ°Έκ³ νμ¬ λ³νν μμ λ₯Ό λ§λ λ€.
- λΈλλ°μ€ ν΄μ¦
- ν μ€νΈ μΌμ΄μ€κ° μ€ν¨ν μμΈμ μ°Ύλλ€.
μμ΄ν 1
Quiz
- νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ Supersetμ΄λ€. (O/X)
- λͺ¨λ μλ°μ€ν¬λ¦½νΈ νλ‘κ·Έλ¨μ νμ μ€ν¬λ¦½νΈ νλ‘κ·Έλ¨μ΄λ€. (O/X)
- νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ λ°νμ λμμ λͺ¨λΈλ§νλ νμ μμ€ν μ κ°μ§κ³ μλ€. (O/X)
Example
const numbers = [1, 2, 3];
console.log(numbers[3].toFixed());
-
μ μ½λμμ μ΄λ€ μΌμ΄ λ°μνλμ?
-
a) λ°°μ΄μ μΈλ±μ€ λ²μλ₯Ό μ΄κ³Όνμ¬ μ κ·Όνλ μ€λ₯
-
b) undefinedμ μμ±μ μ½μ μ μλ μ€λ₯
-
c) toFixed()μ μ νν νμ μ μΈμλ₯Ό μ λ¬νμ§ μμ μ€λ₯
-
d) μ€λ₯ μμ΄ μ€νλ¨
-
νμ 체컀λ μλ¬λ₯Ό λ°κ²¬ν μ μλμ? (O/X)
interface Fruits {
name: string;
details: {
info: {
icon: string;
};
};
}
const fruits: Fruits[] = [
{ name: "Apple", details: { info: { icon: "π" } } },
{ name: "Orange", details: { info: { iocn: "π" } } }, // 1οΈβ£
{ name: "Grape", details: { info: { icon: "π" } } },
{ name: "Cherry", details: null }, // 3οΈβ£
];
for (const fruit of fruits) {
console.log(fruit.details.icon); // 2οΈβ£
}
- μ μ½λμμ λ°μνλ 3κ°μ§ μ€λ₯μ, λ°μ μμΉλ?
- a) Type 'null' is not assignable to type '{ info: { icon: string; }; }'.
- b) Property 'icon' does not exist on type ...
- c) Type '{ iocn: string; }' is not assignable to type '{ icon: string; }'.Object literal may only specify known properties, and 'iocn' does not exist in type '{ icon: string; }'.
- d) 'fruit.details' is possibly 'undefined'.
Blackbox
/**
* - μ€λ₯κ° λ°μν κΉμ?
* - μ΄λ€ μμΉμμ λ°μν κΉμ?
* - μ΄μ λ 무μμΈκ°μ?
* */
// Question A
function processDataA(input) {
return input / 2;
}
console.log(processDataA("10"));
// Question B
function processDataB(input: number) {
return input / 2;
}
console.log(processDataB("10"));
// Question C
function processDataC(input: number) {
return input / 2;
}
console.log(processDataC("10" as any));
μμ΄ν 2
Quiz
- tsconfig.jsonμ μ¬μ©νλ κ²μ΄ μ’μ μ΄μ λ‘ λ μ μ ν κ²μ?
- a) νμ μ€ν¬λ¦½νΈ μ½λμ λ¬Έμ λ₯Ό λ μ½κ² λ°κ²¬ν μ μκΈ° λλ¬Έ
- b) λ€λ₯Έ λꡬμμ νΈνμ±μ 보μ₯νκΈ° μν΄μ
- noImplicitAny μ€μ μ trueλ‘ μ€μ νλ κ²½μ°μ λν μ€λͺ
μΌλ‘ μ³μ κ²μ?
- a) νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬λ λͺ¨λ ν¨μμ 맀κ°λ³μμ λν νμ μ λͺ μνμ§ μμΌλ©΄ κ²½κ³ λ₯Ό λ°μμν΅λλ€.
- b) νμ λͺ μλ₯Ό νμ§ μμ κ²½μ° μ½λλ μ»΄νμΌλμ§ μμ΅λλ€.
- c) κ°λ°μκ° μμ°μ±μ ν₯μμν€κΈ° μν΄ falseλ‘ μ€μ νλ κ²μ΄ μΌλ°μ μ λλ€.- d) λͺ¨λ νλͺ©μ΄ μ³μ λ΅
- strictNullChecks μ€μ μ trueλ‘ μ€μ νλ μ΄μ λ 'undefinedλ κ°μ²΄κ° μλλλ€'μ κ°μ λ°νμ μ€λ₯λ₯Ό λ°©μ§νκΈ° μν΄μμ΄λ€. (O/X)