μ± μ μ΄μ©ν μ€ν°λλ₯Ό νλ©΄μ νμμ μ°μ§ μλ (κ²½νμ΄ μλ μ± λ΄μ©μ μ 리νλ) κΈμ μ°λ©΄μ λ§μ κ³ λ―Όμ νκ² λλ€. μ΄λ»κ² ν΄μΌ μλ²½ν μ΄ν΄νκ³ , μ 리νκ³ , κΈ°λ‘ν μ μμκΉ. μ± μ μμ κ·Έλλ‘ μ°μ§ μκ³ λ΄κ° μ΄ν΄ν νλ¦λλ‘ μ¬κ΅¬μ±ν΄μ κΈμ μ°λλ‘ λ Έλ ₯ν΄λ³΄λ €κ³ νλ€. ν¨μ¨μ μΈ λ°©λ²μΈμ§λ λͺ¨λ₯΄κ² μ§λ§.
μ§λμ£Όμ 곡λΆνλ ꡬ쑰μ νμ΄νμ κ΄μ μμ 보면 μλμ μ½λλ μ€λ₯κ° λ°μνμ§ μλλ€.
interface Room {
numDoors: number;
ceilingHeightFt: number;
}
const obj = {
numDoors: 1,
ceilingHeightFt: 10;
elephant: 'present',
}
const r: Room = obj;
μΆλ‘ λ obj
μ νμ
μ Room
νμ
μ λΆλΆ μ§ν©μ ν¬ν¨νλ―λ‘, Roomμ ν λΉ κ°λ₯νκ³ νμ
체컀λ ν΅νλ€. νμ§λ§ μ΄λ¬ν ꡬ쑰μ νμ
μ²λ¦¬λ 무μΈκ°κ° μ€μ λ€λ£¨λ κ²λ³΄λ€ λ λ§μ λ°μ΄ν°λ₯Ό λ°μλ€μΈλ€λ μ€ν΄λ₯Ό λΆλ¬μΌμΌν¬ μ μλ€λ μ½μ μ΄ μλ€.
interface Options {
title: string;
darkMode?: boolean;
}
λ¨μ μΈ μλ‘ μμ μ½λκ° μλ€. string
νμ
μ title μμ±λ§ μ λλ‘ μλ€λ©΄ λͺ¨λ κ°μ²΄λ Options
νμ
μ μν μ μλ€. νμ
μ λ²μκ° λ§€μ° λμ΄μ§λ κ².
μ μ λ(Freshness)
μ΄λ₯Ό μν΄ TypeSciptλ ꡬ쑰μ μΌλ‘ νμ νΈνμ±μ΄ μλ κ°μ²΄ 리ν°λ΄μ νμ κ²μ¬λ₯Ό μ½κ² ν μ μλλ‘ μ μ λ(Freshness)λΌλ κ°λ μ μ 곡νλ€(λ€λ₯Έ λ§λ‘ μ격ν κ°μ²΄ 리ν°λ΄ κ²μ¬λΌ νκΈ°λ νλ€).
const r: Room = {
numDoors: 1,
ceilingHeightFt: 10;
elephant: 'present', //μ€λ₯!!
}
κ°μ²΄ 리ν°λ΄μΌ λλ§ μ΄λ° μμ νμ κ²μ¬λ₯Ό μννκ³ μ€λ₯λ₯Ό λ΄λ±λλ€. μ΄νν°λΈ νμ μ€ν¬λ¦½νΈμμλ 'μμ¬ μμ± μ²΄ν¬'λΌκ³ ν¨.
λͺ¨λ object literalμ μ΄κΈ°μ “fresh” νλ€κ³ κ°μ£Όλλ©°, νμ λ¨μΈ (type assertion) μ νκ±°λ, νμ μΆλ‘ μ μν΄ object literalμ νμ μ΄ νμ₯λλ©΄ “freshness”κ° μ¬λΌμ§κ² λ©λλ€. νΉμ ν λ³μμ object literalμ ν λΉνλ κ²½μ° μ΄ 2κ°μ§ μ€ νκ°μ§κ° λ°μνκ² λλ―λ‘ “freshness”κ° μ¬λΌμ§κ² λλ©°, ν¨μμ μΈμλ‘ object literalμ λ°λ‘ μ λ¬νλ κ²½μ°μλ “fresh”ν μνλ‘ μ λ¬λ©λλ€.
freshν κ°μ²΄ 리ν°λ΄μ λ³μμ ν λΉνμ§ μκ³ λ°λ‘ μ¬μ©νλ€λ©΄, μ΄μ°¨νΌ ν΄λΉ ν¨μμμλ§ μ¬μ©λκ³ λ€λ₯Έ κ³³μμ μ¬μ©λμ§ μλλ€. μ΄ κ²½μ°μλ μ μ°ν¨μ λν μ΄μ 보λ€λ λΆμμ©μ λ°μμν¬ κ°λ₯μ±μ΄ λμΌλ―λ‘ κ΅³μ΄ κ΅¬μ‘°μ νμ΄νμ μ§μν΄μΌ ν μ΄μ κ° μλ€.
μ 리νμλ©΄, κ°μ²΄ 리ν°λ΄μ λ³μμ ν λΉνκ±°λ ν¨μμ 맀κ°λ³μλ‘ μ λ¬ν λ μμ¬ μμ± μ²΄ν¬κ° μνλλ κ². λ°λΌμ νμ νΈνμ νμ©νμ§ μλλ€.
λΉμ·ν νμ 체ν¬λ₯Ό μ§μνλ κ²½μ°
μ΅μ λν μμ±λ§ κ°μ§λ 'weak' νμ λ λΉμ·νκ² λ³λμ 체ν¬λ₯Ό μννλ€.
interface LineChartOptions {
logscale?: boolean;
invertedYAxis?: boolean;
areaChart?: boolean;
}
ꡬ쑰μ νμ΄ν κ΄μ μμ LineChartOptions
νμ
μ λͺ¨λ μμ±μ΄ μ νμ μ΄λ―λ‘ λͺ¨λ κ°μ²΄λ₯Ό ν¬ν¨ν μ μλ€. μ무거λ λ£μ΄λ λ¬Έμ κ° μμκ±°λΌλ μ΄μΌκΈ°μ΄λ€.
const opts = { logScale: true };
const o: LineChartOptions = opts; //μ€λ₯!!
νμ§λ§ μμ μ½λμμ s
μ S
μ μ€νλ 체컀μμ κ±Έλ¬μ£Όλκ² ν¨κ³Όμ μ΄λ€. μ΄λ¬ν 체ν¬λ μ격ν κ°μ²΄ 리ν°λ΄ 체ν¬μ λ€λ₯΄κ² λͺ¨λ ν λΉλ¬Έλ§λ€ μνλλ€. freshνμ§ μλλΌλ.
κ°μ²΄ 리ν°λ΄μ΄μ§λ§ μμ¬ μμ± μ²΄ν¬λ₯Ό νμ§ μλ κ²½μ°
λ³κ²λ μλλ° μμΈκ° μλ€κ΅¬μ.
1. νμ μ μΈμ΄ μλ νμ λ¨μΈμ νμ λ
interface Options {
title: string;
darkMode?: boolean;
}
const o = {darkmode: true, title: 'Ski Free'} as Options //μ μ
μμμ λ΄€λ μμλ₯Ό λ€μ κ°μ Έμλ€. κ°μ²΄ 리ν°λ΄μ λ³μμ λ°λ‘ ν λΉνκΈ° λλ¬Έμ μμ¬ μμ± μ²΄ν¬λ₯Ό ν΄μΌν κ² κ°μ§λ§, νμ λ¨μΈλ¬Έμ μ¬μ©νμ λ μ μ©λμ§ μλλ€.
2. μΈλ±μ€ μκ·Έλμ²λ₯Ό μ¬μ©νμ λ
interface Options {
darkMode?: boolean;
[otherOptions: string]: unknown;
}
const o: Options = {darkmode: true}; //μ μ
μΈλ±μ€ μκ·Έλμ²λ₯Ό μ¬μ©νλ©΄ νμ μ€ν¬λ¦½νΈκ° μΆκ°μ μΈ μμ±μ μμνλλ‘ ν μ μλ€.
νμ§λ§ μ¬λ§νλ©΄ μ°μ§ λ§μ .
μ 리νμλ©΄ μ΄λ λ€.
- TypeSciptλ ꡬ쑰μ μΌλ‘ νμ νΈνμ±μ΄ μλ κ°μ²΄ 리ν°λ΄μ νμ κ²μ¬λ₯Ό μ½κ² ν μ μλλ‘ μ μ λ(Freshness)λΌλ κ°λ μ μ 곡νλ€.
- κ°μ²΄ 리ν°λ΄μ λ³μμ ν λΉνκ±°λ ν¨μμ 맀κ°λ³μλ‘ μ λ¬ν λ μμ¬ μμ± μ²΄ν¬κ° μνλλ€.
- μμ λ³μ μ΄μ©, μΈλ±μ€ μκ·Έλμ² λ±μΌλ‘ μμ¬ μμ± μ²΄ν¬λ₯Ό 건λλΈ μ μλ€.