is strongly typed programming language that builds on JavaScript!
: μ€μ κ°μ μ μ₯
: λ©λͺ¨λ¦¬μ κ°μ μ£Όμλ‘ μ μ₯νμλ€κ° μΆλ ₯μμ ν΄λΉ μ£Όμμ μΌμΉνλ κ° μΆλ ₯
: κ°λ°μ νΈμλ₯Ό μν μλ£ νμ
: λ³μμ νμ μ 미리 μμ§ λͺ»ν λ μ¬μ©
const a:unknown
if(typeof a === "string") {
}
μ΄λ°μμΌλ‘ μ΄λ€ νμ μ΄λμλ°λΌ 쑰건 μ²λ¦¬νκΈ°λ ν¨
: μ무κ²λ 리ν΄νμ§ μλ ν¨μλ‘ λ³΄ν΅μ κ²½μ° λ°λ‘ voidλ₯Ό μ§μ ν΄μ€ νμλ μλ€
: λ§μ΄ μ¬μ©νμ§λ μμ§λ§ ν¨μκ° μ λ returnνμ§ μμ λ λ°μ
: ν¨μμμ λ§μ°μ€ μ¬λ Έμλ 보μ΄λκ±°
: ν¨μκ° μ¬λ¬κ°μ call signatureλ₯Ό κ°κ³ μμ λ λ°μ
:λ€νμ±! λ€λ₯Έ λͺ¨μμ μ½λ, λ€νμ±μ μ΄λ£°μ μλ λ°©λ² = μ λ€λ¦ μ¬μ©(μ λ€λ¦μ placeholder νμ μ¬μ© κ°λ₯)
= νμ
μ placeholder
call signature μμ±ν λ, νμ€ν νμ
μ λͺ¨λ₯Όλ generic μ¬μ©
μ½λλ₯Ό μμ±ν λκ° μλλΌ μνν λ νμ
λͺ
μ
: tell TS that you want to use generic
type exFunc = {
<T>(arr: T[]):void
}
TλΌλ μ΄λ¦λμ μ무거λ κ°λ₯. κ·Έλ°λ° λ³΄ν΅ T, V μ΄λ°κ±° μ¬μ©
: νμ
κ³Ό λΉμ·νμ§λ§ μ°¨μ΄μ μ‘΄μ¬!
νμ
μ μνλ λͺ¨λ κ² λ μ μμ(string, number μ΄λ°κ±° λ§κ³ νΉμ κ°λ μ§μ κ°λ₯)
μΈν°νμ΄μ€λ μ€λΈμ νΈ λͺ¨μ μ ν΄μ£ΌκΈ°λ§ κ°λ₯(=typeκ³Όμ 곡ν΅μ , 리μ‘νΈμμ μμ£Ό λ΄)
type > interface μ΄λ©° ν΄λμ€λ₯Ό λ€λ£¨λ λλ
Interface is a keyword only use when you want to specify explain to TS the shape of an object.
interface Dog {
name: string;
}
interface Animal extends Dog {
}
μμ interface ννμ typeμΌλ‘ ν μ μμ λμ μμ νννλλΆλΆμ΄ μ°¨μ΄μμ
type Dog = {
name: string;
}
type Animal = Dog & {
}
μΆμν΄λμ€λ jsλ‘ μ»΄νμΌνλ©΄ μΌλ°μ μΈ ν΄λμ€λ‘ μΆκ°λλ©΄μ μμ±λκΈ° λλ¬Έμ νμΌ ν¬κΈ°κ° 컀μ§
abstract class Person {
constructor (
protected firstName: string,
protected lastName: string
){}
abstract fullName(): string
}
//μΆμν΄λμ€λ μ΄κ±Έ μμλ°λ λ€λ₯Έ ν΄λμ€κ° κ°μ§ νλ‘νΌν°μ λ©μλλ₯Ό μ§μ νλλ‘ ν΄μ€λ€.
class Student extends Person {
fullName(){
return `${this.firstName} ${this.lastName}`
}
}
μΈν°νμ΄μ€λ μ»΄νμΌνλ©΄ jsλ‘ λ°λμ§ μκ³ μ¬λΌμ§κΈ° λλ¬Έμ λ κ°λ²Όμ
interface Person {
firstName: string,
lastName: string,
fullName(): string
}
class Student implements Person {
constructor(public firstName: string, public lastName: string) {}
fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
: λͺ¨λ ν΄λμ€λ ConstructorλΌλ λ©μλλ₯Ό κ°μ§λλ° μ΄λ ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό μμ±ν λ νΈμΆλλ©° κ°μ²΄μ μ΄κΈ°ν λ΄λΉ