Skip to content

Latest commit

Β 

History

History
310 lines (224 loc) Β· 12.3 KB

basic-types.md

File metadata and controls

310 lines (224 loc) Β· 12.3 KB

λͺ©μ°¨ (Table of Contents)

  1. μ†Œκ°œ (Introduction)
  2. λΆˆλ¦¬μ–Έ (Boolean)
  3. 숫자 (Number)
  4. λ¬Έμžμ—΄ (String)
  5. λ°°μ—΄ (Array)
  6. νŠœν”Œ (Tuple)
  7. μ—΄κ±° (Enum)
  8. Any
  9. Void
  10. Null and Undefined
  11. Never
  12. 객체 (Object)
  13. νƒ€μž… 단언 (Type assertions)
  14. 'let'에 κ΄€ν•˜μ—¬

μ†Œκ°œ (Introduction)

ν”„λ‘œκ·Έλž¨μ΄ μœ μš©ν•˜λ €λ©΄ 숫자, λ¬Έμžμ—΄, ꡬ쑰체, λΆˆλ¦¬μ–Έ κ°’κ³Ό 같은 κ°„λ‹¨ν•œ 데이터 λ‹¨μœ„κ°€ ν•„μš”ν•©λ‹ˆλ‹€. TypeScriptλŠ” JavaScript와 거의 λ™μΌν•œ 데이터 νƒ€μž…μ„ μ§€μ›ν•˜λ©°, μ—΄κ±° νƒ€μž…μ„ μ‚¬μš©ν•˜μ—¬ 더 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λΆˆλ¦¬μ–Έ (Boolean)

κ°€μž₯ 기본적인 데이터 νƒ€μž…μ€ JavaScript, TypeScriptμ—μ„œ boolean 값이라고 μΌμ»«λŠ” μ°Έ/거짓(true/false) κ°’μž…λ‹ˆλ‹€.

let isDone: boolean = false;

숫자 (Number)

JavaScript처럼, TypeScript의 λͺ¨λ“  μˆ«μžλŠ” 뢀동 μ†Œμˆ˜ κ°’μž…λ‹ˆλ‹€. 뢀동 μ†Œμˆ˜μ—λŠ” numberλΌλŠ” νƒ€μž…μ΄ λΆ™ν˜€μ§‘λ‹ˆλ‹€. TypeScriptλŠ” 16μ§„μˆ˜, 10μ§„μˆ˜ λ¦¬ν„°λŸ΄μ— λ”λΆˆμ–΄, ECMAScript 2015에 μ†Œκ°œλœ 2μ§„μˆ˜, 8μ§„μˆ˜ λ¦¬ν„°λŸ΄λ„ μ§€μ›ν•©λ‹ˆλ‹€.

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

λ¬Έμžμ—΄ (String)

μ›Ή νŽ˜μ΄μ§€, μ„œλ²„ 같은 ν”„λ‘œκ·Έλž¨μ„ JavaScript둜 λ§Œλ“€ λ•Œ 기본적으둜 ν…μŠ€νŠΈ 데이터λ₯Ό λ‹€λ£¨λŠ” μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ–Έμ–΄λ“€μ²˜λŸΌ, TypeScriptμ—μ„œλŠ” ν…μŠ€νŠΈ 데이터 νƒ€μž…μ„ string으둜 ν‘œν˜„ν•©λ‹ˆλ‹€. JavaScript처럼 TypeScript도 ν°λ”°μ˜΄ν‘œ (")λ‚˜ μž‘μ€λ”°μ˜΄ν‘œ (')λ₯Ό λ¬Έμžμ—΄ 데이터λ₯Ό κ°μ‹ΈλŠ”λ° μ‚¬μš©ν•©λ‹ˆλ‹€.

let color: string = "blue";
color = 'red';

λ˜ν•œ ν…œν”Œλ¦Ώ λ¬Έμžμ—΄ 을 μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ 쀄에 걸쳐 λ¬Έμžμ—΄μ„ μž‘μ„±ν•  수 있으며, ν‘œν˜„μ‹μ„ ν¬ν•¨μ‹œν‚¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμžμ—΄μ€ λ°±ν‹±/백쿼트 (`) 문자둜 감싸지며, ${ expr }κ³Ό 같은 ν˜•νƒœλ‘œ ν‘œν˜„μ‹μ„ ν¬ν•¨μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }.
I'll be ${ age + 1 } years old next month.`;

μœ„λŠ” μ•„λž˜ sentenceμ„ μ–Έκ³Ό λ™μΌν•©λ‹ˆλ‹€:

let sentence: string = "Hello, my name is " + fullName + ".\n\n" +
    "I'll be " + (age + 1) + " years old next month.";

λ°°μ—΄ (Array)

TypeScriptλŠ” JavaScript처럼 값듀을 λ°°μ—΄λ‘œ λ‹€λ£° 수 있게 ν•΄μ€λ‹ˆλ‹€. λ°°μ—΄ νƒ€μž…μ€ 두 가지 λ°©λ²•μœΌλ‘œ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€. 첫 번째 방법은, λ°°μ—΄ μš”μ†Œλ“€μ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž… 뒀에 []λ₯Ό μ“°λŠ” κ²ƒμž…λ‹ˆλ‹€:

let list: number[] = [1, 2, 3];

두 번째 방법은 μ œλ„€λ¦­ λ°°μ—΄ νƒ€μž…μ„ μ“°λŠ” κ²ƒμž…λ‹ˆλ‹€. Array<elemType>:

let list: Array<number> = [1, 2, 3];

νŠœν”Œ (Tuple)

νŠœν”Œ νƒ€μž…μ„ μ‚¬μš©ν•˜λ©΄, μš”μ†Œμ˜ νƒ€μž…κ³Ό κ°œμˆ˜κ°€ κ³ μ •λœ 배열을 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 단 μš”μ†Œλ“€μ˜ νƒ€μž…μ΄ λͺ¨λ‘ 같을 ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, number, string 이 쌍으둜 μžˆλŠ” 값을 λ‚˜νƒ€λ‚΄κ³  싢을 수 μžˆμŠ΅λ‹ˆλ‹€:

// νŠœν”Œ νƒ€μž…μœΌλ‘œ μ„ μ–Έ
let x: [string, number];
// μ΄ˆκΈ°ν™”
x = ["hello", 10]; // 성곡
// 잘λͺ»λœ μ΄ˆκΈ°ν™”
x = [10, "hello"]; // 였λ₯˜

정해진 μΈλ±μŠ€μ— μœ„μΉ˜ν•œ μš”μ†Œμ— μ ‘κ·Όν•˜λ©΄ ν•΄λ‹Ή νƒ€μž…μ΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

console.log(x[0].substring(1)); // 성곡
console.log(x[1].substring(1)); // 였λ₯˜, 'number'μ—λŠ” 'substring' 이 μ—†μŠ΅λ‹ˆλ‹€.

정해진 인덱슀 외에 λ‹€λ₯Έ μΈλ±μŠ€μ— μžˆλŠ” μš”μ†Œμ— μ ‘κ·Όν•˜λ©΄, 였λ₯˜κ°€ λ°œμƒν•˜λ©° μ‹€νŒ¨ν•©λ‹ˆλ‹€.

x[3] = "world"; // 였λ₯˜, '[string, number]' νƒ€μž…μ—λŠ” ν”„λ‘œνΌν‹° '3'이 μ—†μŠ΅λ‹ˆλ‹€.

console.log(x[5].toString()); // '[string, number]' νƒ€μž…μ—λŠ” ν”„λ‘œνΌν‹° '5'κ°€ μ—†μŠ΅λ‹ˆλ‹€.

μ—΄κ±° (Enum)

JavaScript의 ν‘œμ€€ μžλ£Œν˜• 집합과 μ‚¬μš©ν•˜λ©΄ 도움이 λ λ§Œν•œ 데이터 ν˜•μ€ enumμž…λ‹ˆλ‹€. C# 같은 μ–Έμ–΄μ²˜λŸΌ, enum은 κ°’μ˜ 집합에 더 λ‚˜μ€ 이름을 뢙여쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

기본적으둜, enum은 0λΆ€ν„° μ‹œμž‘ν•˜μ—¬ λ©€λ²„λ“€μ˜ 번호λ₯Ό λ§€κΉλ‹ˆλ‹€. 멀버 쀑 ν•˜λ‚˜μ˜ 값을 μˆ˜λ™μœΌλ‘œ μ„€μ •ν•˜μ—¬ 번호λ₯Ό λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μœ„ 예제λ₯Ό 0λŒ€μ‹  1λΆ€ν„° μ‹œμž‘ν•΄ 번호λ₯Ό 맀기도둝 λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€.

enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;

λ˜λŠ”, λͺ¨λ“  값을 μˆ˜λ™μœΌλ‘œ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;

enum의 μœ μš©ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜λŠ” 맀겨진 값을 μ‚¬μš©ν•΄ enum λ©€λ²„μ˜ 이름을 μ•Œμ•„λ‚Ό 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μœ„μ˜ μ˜ˆμ œμ—μ„œ 2λΌλŠ” 값이 μœ„μ˜ μ–΄λ–€ Color enum 멀버와 λ§€μΉ­λ˜λŠ”μ§€ μ•Œ 수 없을 λ•Œ, 이에 μΌμΉ˜ν•˜λŠ” 이름을 μ•Œμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName); // 값이 2인 'Green'이 좜λ ₯λ©λ‹ˆλ‹€.

Any

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€ λ•Œ, μ•Œμ§€ λͺ»ν•˜λŠ” νƒ€μž…μ„ ν‘œν˜„ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 값듀은 μ‚¬μš©μžλ‘œλΆ€ν„° 받은 λ°μ΄ν„°λ‚˜ μ„œλ“œ νŒŒν‹° 라이브러리 같은 동적인 μ»¨ν…μΈ μ—μ„œ 올 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 경우 νƒ€μž… 검사λ₯Ό ν•˜μ§€ μ•Šκ³ , κ·Έ 값듀이 컴파일 μ‹œκ°„μ— 검사λ₯Ό ν†΅κ³Όν•˜κΈΈ μ›ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄, any νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성곡, λΆ„λͺ…νžˆ λΆ€μšΈμž…λ‹ˆλ‹€.

any νƒ€μž…μ€ 기쑴에 JavaScript둜 μž‘μ—…ν•  수 μžˆλŠ” κ°•λ ₯ν•œ λ°©λ²•μœΌλ‘œ, 컴파일 쀑에 μ μ§„μ μœΌλ‘œ νƒ€μž… 검사λ₯Ό ν•˜κ±°λ‚˜ ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 혹 λ‹€λ₯Έ μ–Έμ–΄μ—μ„œ κ·Έλ ‡λ“―, Objectκ°€ λΉ„μŠ·ν•œ 역할을 ν•  수 μžˆμ„ 것 κ°™λ‹€κ³  생각할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 그런데, Object둜 μ„ μ–Έλœ λ³€μˆ˜λ“€μ€ 였직 μ–΄λ–€ 값이든 κ·Έ λ³€μˆ˜μ— ν• λ‹Ήν•  수 있게 ν•΄μ£Όμ§€λ§Œ μ‹€μ œλ‘œ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜λ”λΌλ„, μž„μ˜λ‘œ ν˜ΈμΆœν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€:

let notSure: any = 4;
notSure.ifItExists(); // 성곡, ifItExists λŠ” λŸ°νƒ€μž„μ—” μ‘΄μž¬ν•  κ²ƒμž…λ‹ˆλ‹€.
notSure.toFixed(); // 성곡, toFixedλŠ” μ‘΄μž¬ν•©λ‹ˆλ‹€. (ν•˜μ§€λ§Œ μ»΄νŒŒμΌλŸ¬λŠ” κ²€μ‚¬ν•˜μ§€ μ•ŠμŒ)

let prettySure: Object = 4;
prettySure.toFixed(); // 였λ₯˜: ν”„λ‘œνΌν‹° 'toFixed'λŠ” 'Object'에 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Note: Do's and Don'ts에 μ„€λͺ… ν–ˆλ“―μ΄ Objectλ₯Ό no-primitive object λŒ€μ‹ μ— μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”.

λ˜ν•œ, any νƒ€μž…μ€ νƒ€μž…μ˜ μΌλΆ€λ§Œ μ•Œκ³  μ „μ²΄λŠ” μ•Œμ§€ λͺ»ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ—¬λŸ¬ λ‹€λ₯Έ νƒ€μž…μ΄ μ„žμΈ 배열을 λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€.

let list: any[] = [1, true, "free"];

list[1] = 100;

Void

voidλŠ” μ–΄λ–€ νƒ€μž…λ„ μ‘΄μž¬ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚΄κΈ° λ•Œλ¬Έμ—, any의 λ°˜λŒ€ νƒ€μž… κ°™μŠ΅λ‹ˆλ‹€. voidλŠ” 보톡 ν•¨μˆ˜μ—μ„œ λ°˜ν™˜ 값이 없을 λ•Œ λ°˜ν™˜ νƒ€μž…μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ“°μ΄λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

function warnUser(): void {
    console.log("This is my warning message");
}

voidλ₯Ό νƒ€μž… λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 것은 μœ μš©ν•˜μ§€ μ•Šμ€λ°, μ™œλƒν•˜λ©΄ κ·Έ λ³€μˆ˜μ—λŠ” null(--strictNullChecks을 μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œλ§Œ ν•΄λ‹Ή, μžμ„Έν•œ 건 λ‹€μŒ μ„Ήμ…˜μ„ μ°Έκ³ )λ˜λŠ” undefined 만 ν• λ‹Ήν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€:

let unusable: void = undefined;
unusable = null; // 성곡  `--strictNullChecks` 을 μ‚¬μš©ν•˜μ§€ μ•Šμ„λ•Œλ§Œ

Null and Undefined

TypeScriptλŠ” undefined κ³Ό null λ‘˜ λ‹€ 각각 μžμ‹ μ˜ νƒ€μž… μ΄λ¦„μœΌλ‘œ undefined , null둜 μ‚¬μš©ν•©λ‹ˆλ‹€. void처럼 κ·Έ 자체둜 μœ μš©ν•œ κ²½μš°λŠ” 거의 μ—†μŠ΅λ‹ˆλ‹€:

// 이 밖에 이 λ³€μˆ˜λ“€μ— ν• λ‹Ήν•  수 μžˆλŠ” 값이 μ—†μŠ΅λ‹ˆλ‹€!
let u: undefined = undefined;
let n: null = null;

기본적으둜 null κ³Ό undefinedλŠ” λ‹€λ₯Έ λͺ¨λ“  νƒ€μž…μ˜ ν•˜μœ„ νƒ€μž…λ‹ˆλ‹€. 이건, nullκ³Ό undefinedλ₯Ό number 같은 νƒ€μž…μ— ν• λ‹Ήν•  수 μžˆλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, --strictNullChecksλ₯Ό μ‚¬μš©ν•˜λ©΄, nullκ³Ό undefinedλŠ” 였직 any와 각자 μžμ‹ λ“€ νƒ€μž…μ—λ§Œ ν• λ‹Ή κ°€λŠ₯ν•©λ‹ˆλ‹€. (μ˜ˆμ™Έμ μœΌλ‘œ undefinedλŠ” void에 ν• λ‹Ή κ°€λŠ₯ν•©λ‹ˆλ‹€) 이건 λ§Žμ€ 일반적인 μ—λŸ¬λ₯Ό λ°©μ§€ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€. 이 경우, string λ˜λŠ” null λ˜λŠ” undefinedλ₯Ό ν—ˆμš©ν•˜κ³  싢은 경우 μœ λ‹ˆμ–Έ νƒ€μž…μΈ string | null | undefinedλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μœ λ‹ˆμ–Έ νƒ€μž…μ€ 상급 주제둜, 이후 μ±•ν„°μ—μ„œ λ‹€λ£Ήλ‹ˆλ‹€.

As a note: κ°€λŠ₯ν•œ 경우 --strictNullChecksλ₯Ό μ‚¬μš©ν•  것을 ꢌμž₯ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν•Έλ“œλΆμ˜ λͺ©μ μ— 따라, μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

Never

never νƒ€μž…μ€ μ ˆλŒ€ λ°œμƒν•  수 μ—†λŠ” νƒ€μž…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, neverλŠ” ν•¨μˆ˜ ν‘œν˜„μ‹μ΄λ‚˜ ν™”μ‚΄ν‘œ ν•¨μˆ˜ ν‘œν˜„μ‹μ—μ„œ 항상 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€κ±°λ‚˜ μ ˆλŒ€ λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ“°μž…λ‹ˆλ‹€. λ³€μˆ˜ λ˜ν•œ νƒ€μž… κ°€λ“œμ— μ˜ν•΄ 아무 νƒ€μž…λ„ 얻지 λͺ»ν•˜κ²Œ μ’ν˜€μ§€λ©΄ never νƒ€μž…μ„ μ–»κ²Œ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

neverνƒ€μž…μ€ λͺ¨λ“  νƒ€μž…μ— ν• λ‹Ή κ°€λŠ₯ν•œ ν•˜μœ„ νƒ€μž…μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ–΄λ–€ νƒ€μž…λ„ never에 ν• λ‹Ήν•  수 μžˆκ±°λ‚˜, ν•˜μœ„ νƒ€μž…μ΄ μ•„λ‹™λ‹ˆλ‹€.(never μžμ‹ μ€ μ œμ™Έ) 심지어 any 도 never에 ν• λ‹Ήν•  수 μ—†μŠ΅λ‹ˆλ‹€.

neverλ₯Ό λ°˜ν™˜ν•˜λŠ” λͺ‡ 가지 μ˜ˆμ œμž…λ‹ˆλ‹€:

// neverλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λŠ” ν•¨μˆ˜μ˜ λ§ˆμ§€λ§‰μ— 도달할 수 μ—†λ‹€.
function error(message: string): never {
    throw new Error(message);
}

// λ°˜ν™˜ νƒ€μž…μ΄ never둜 μΆ”λ‘ λœλ‹€.
function fail() {
    return error("Something failed");
}

// neverλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λŠ” ν•¨μˆ˜μ˜ λ§ˆμ§€λ§‰μ— 도달할 수 μ—†λ‹€.
function infiniteLoop(): never {
    while (true) {
    }
}

객체 (Object)

objectλŠ” μ›μ‹œ νƒ€μž…μ΄ μ•„λ‹Œ νƒ€μž…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, number, string, boolean, bigint, symbol, null, λ˜λŠ” undefined κ°€ μ•„λ‹Œ λ‚˜λ¨Έμ§€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

object νƒ€μž…μ„ μ“°λ©΄, Object.create 같은 API κ°€ 더 잘 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

declare function create(o: object | null): void;

create({ prop: 0 }); // 성곡
create(null); // 성곡

create(42); // 였λ₯˜
create("string"); // 였λ₯˜
create(false); // 였λ₯˜
create(undefined); // 였λ₯˜

νƒ€μž… 단언 (Type assertions)

가끔, TypeScript보닀 κ°œλ°œμžκ°€ 값에 λŒ€ν•΄ 더 잘 μ•Œκ³  일을 λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λŒ€κ°œ, 이런 κ²½μš°λŠ” μ–΄λ–€ μ—”ν‹°ν‹°μ˜ μ‹€μ œ νƒ€μž…μ΄ ν˜„μž¬ νƒ€μž…λ³΄λ‹€ 더 ꡬ체적일 λ•Œ λ°œμƒν•©λ‹ˆλ‹€.

νƒ€μž… 단언(Type assertions) 은 μ»΄νŒŒμΌλŸ¬μ—κ²Œ "λ‚  λ―Ώμ–΄, λ‚œ λ‚΄κ°€ 뭘 ν•˜κ³  μžˆλŠ”μ§€ μ•Œμ•„"라고 λ§ν•΄μ£ΌλŠ” λ°©λ²•μž…λ‹ˆλ‹€. νƒ€μž… 단언은 λ‹€λ₯Έ μ–Έμ–΄μ˜ νƒ€μž… λ³€ν™˜(ν˜• λ³€ν™˜)κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ, λ‹€λ₯Έ νŠΉλ³„ν•œ 검사λ₯Ό ν•˜κ±°λ‚˜ 데이터λ₯Ό μž¬κ΅¬μ„±ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŠ” λŸ°νƒ€μž„μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ©°, μ˜¨μ „νžˆ 컴파일러만 이λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. νƒ€μž… μŠ€ν¬λ¦½νŠΈλŠ” κ°œλ°œμžκ°€ ν•„μš”ν•œ μ–΄λ–€ νŠΉμ • 검사λ₯Ό μˆ˜ν–‰ν–ˆλ‹€κ³  μΈμ§€ν•©λ‹ˆλ‹€.

νƒ€μž… λ‹¨μ–Έμ—λŠ” 두 가지 ν˜•νƒœκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ‚˜λŠ”, "angle-bracket" λ¬Έλ²•μž…λ‹ˆλ‹€:

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

λ‹€λ₯Έ ν•˜λ‚˜λŠ” as-문법 μž…λ‹ˆλ‹€.

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

μœ„ 두 μ˜ˆμ œλŠ” λ™μΌν•©λ‹ˆλ‹€. μ–΄λ–€ 것을 μ‚¬μš©ν• μ§€λŠ” 주둜 μ„ ν˜Έμ— λ”°λ₯Έ μ„ νƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ TypeScriptλ₯Ό JSX와 ν•¨κ»˜ μ‚¬μš©ν•  λ•ŒλŠ”, as-μŠ€νƒ€μΌμ˜ λ‹¨μ–Έλ§Œ ν—ˆμš©λ©λ‹ˆλ‹€.

let에 κ΄€ν•˜μ—¬

μ§€κΈˆκΉŒμ§€ 더 μ΅μˆ™ν•  μˆ˜λ„ μžˆλŠ” JavaScript의 var ν‚€μ›Œλ“œ λŒ€μ‹  let ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν–ˆλ‹€λŠ” κ±Έ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. let ν‚€μ›Œλ“œλŠ” JavaScript ES2015μ—μ„œ μ†Œκ°œλ˜μ—ˆκ³ , var보닀 μ•ˆμ „ν•˜λ‹€λŠ” 이유둜, ν˜„μž¬ ν‘œμ€€μœΌλ‘œ 여겨지고 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜μ€‘μ— 더 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ JavaScript의 λ¬Έμ œλ“€μ΄ let을 μ‚¬μš©ν•΄μ„œ ν•΄κ²°λ˜λ©°, λ•Œλ¬Έμ— κ°€λŠ₯ν•œ 경우 μ΅œλŒ€ν•œ varλŒ€μ‹  let을 μ‚¬μš©ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€.