- μκ° (Introduction)
- λΆλ¦¬μΈ (Boolean)
- μ«μ (Number)
- λ¬Έμμ΄ (String)
- λ°°μ΄ (Array)
- νν (Tuple)
- μ΄κ±° (Enum)
- Any
- Void
- Null and Undefined
- Never
- κ°μ²΄ (Object)
- νμ λ¨μΈ (Type assertions)
- 'let'μ κ΄νμ¬
νλ‘κ·Έλ¨μ΄ μ μ©νλ €λ©΄ μ«μ, λ¬Έμμ΄, ꡬ쑰체, λΆλ¦¬μΈ κ°κ³Ό κ°μ κ°λ¨ν λ°μ΄ν° λ¨μκ° νμν©λλ€. TypeScriptλ JavaScriptμ κ±°μ λμΌν λ°μ΄ν° νμ μ μ§μνλ©°, μ΄κ±° νμ μ μ¬μ©νμ¬ λ νΈλ¦¬νκ² μ¬μ©ν μ μμ΅λλ€.
κ°μ₯ κΈ°λ³Έμ μΈ λ°μ΄ν° νμ
μ JavaScript, TypeScriptμμ boolean
κ°μ΄λΌκ³ μΌμ»«λ μ°Έ/κ±°μ§(true/false) κ°μ
λλ€.
let isDone: boolean = false;
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;
μΉ νμ΄μ§, μλ² κ°μ νλ‘κ·Έλ¨μ 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.";
TypeScriptλ JavaScriptμ²λΌ κ°λ€μ λ°°μ΄λ‘ λ€λ£° μ μκ² ν΄μ€λλ€.
λ°°μ΄ νμ
μ λ κ°μ§ λ°©λ²μΌλ‘ μΈ μ μμ΅λλ€.
첫 λ²μ§Έ λ°©λ²μ, λ°°μ΄ μμλ€μ λνλ΄λ νμ
λ€μ []
λ₯Ό μ°λ κ²μ
λλ€:
let list: number[] = [1, 2, 3];
λ λ²μ§Έ λ°©λ²μ μ λ€λ¦ λ°°μ΄ νμ
μ μ°λ κ²μ
λλ€. Array<elemType>
:
let list: Array<number> = [1, 2, 3];
νν νμ
μ μ¬μ©νλ©΄, μμμ νμ
κ³Ό κ°μκ° κ³ μ λ λ°°μ΄μ ννν μ μμ΅λλ€. λ¨ μμλ€μ νμ
μ΄ λͺ¨λ κ°μ νμλ μμ΅λλ€. μλ₯Ό λ€μ΄, 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'κ° μμ΅λλ€.
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
νμ
μ μ¬μ©ν μ μμ΅λλ€:
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-primitiveobject
λμ μ μ¬μ©νμ§ λ§μΈμ.
λν, any νμ μ νμ μ μΌλΆλ§ μκ³ μ 체λ μμ§ λͺ»ν λ μ μ©ν©λλ€. μλ₯Ό λ€μ΄, μ¬λ¬ λ€λ₯Έ νμ μ΄ μμΈ λ°°μ΄μ λ€λ£° μ μμ΅λλ€.
let list: any[] = [1, true, "free"];
list[1] = 100;
void
λ μ΄λ€ νμ
λ μ‘΄μ¬ν μ μμμ λνλ΄κΈ° λλ¬Έμ, any
μ λ°λ νμ
κ°μ΅λλ€.
void
λ λ³΄ν΅ ν¨μμμ λ°ν κ°μ΄ μμ λ λ°ν νμ
μ νννκΈ° μν΄ μ°μ΄λ κ²μ λ³Ό μ μμ΅λλ€:
function warnUser(): void {
console.log("This is my warning message");
}
void
λ₯Ό νμ
λ³μλ₯Ό μ μΈνλ κ²μ μ μ©νμ§ μμλ°, μλνλ©΄ κ·Έ λ³μμλ null
(--strictNullChecks
μ μ¬μ©νμ§ μμ λλ§ ν΄λΉ, μμΈν 건 λ€μ μΉμ
μ μ°Έκ³ )λλ undefined
λ§ ν λΉν μ μκΈ° λλ¬Έμ
λλ€:
let unusable: void = undefined;
unusable = null; // μ±κ³΅ `--strictNullChecks` μ μ¬μ©νμ§ μμλλ§
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
μμ μ μ μΈ)
μ¬μ§μ΄ 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
λ μμ νμ
μ΄ μλ νμ
μ λνλ
λλ€. μλ₯Ό λ€μ΄, 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); // μ€λ₯
κ°λ, 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
-μ€νμΌμ λ¨μΈλ§ νμ©λ©λλ€.
μ§κΈκΉμ§ λ μ΅μν μλ μλ JavaScriptμ var
ν€μλ λμ let
ν€μλλ₯Ό μ΄μ©νλ€λ κ±Έ μ μ μμ΅λλ€.
let
ν€μλλ JavaScript ES2015μμ μκ°λμκ³ , var
λ³΄λ€ μμ νλ€λ μ΄μ λ‘, νμ¬ νμ€μΌλ‘ μ¬κ²¨μ§κ³ μμ΅λλ€.
λμ€μ λ μμΈν μ΄ν΄λ³΄κ² μ§λ§, λλΆλΆμ JavaScriptμ λ¬Έμ λ€μ΄ let
μ μ¬μ©ν΄μ ν΄κ²°λλ©°, λλ¬Έμ κ°λ₯ν κ²½μ° μ΅λν var
λμ let
μ μ¬μ©νμ
μΌ ν©λλ€.