let tuple:[number, string];
tuple = [1, 'abc'];
// ์๋ฌ
// tuple = ['abc', 1];
enum NickName {
Sophia = 'Sop',
James = 'Jam',
Amy = 'Amy',
}
let nick:NickName = NickName.Sophia;
let user:object;
user = {
name: 'abc',
age: 20,
}
// ์๋ฌ : user.name ์ ๊ทผ ๋ถ๊ฐ๋ฅ
// user.name
interface User {
name: string;
age: number;
}
let user : User = {
name: 'abc',
age: 20,
}
// ์ ๊ทผ ๊ฐ๋ฅ
user.name
// key ํ์
์ด number์ด๊ณ value ํ์
์ด string์ธ ํ๋กํผํฐ๋ ๋ชจ๋ ํ์ฉ
interface User {
[grade:number]: string;
}
type Score = 'A' | 'B' | 'C' | 'F';
interface User {
[grade: number]: Score;
}
interface User {
name: string;
age: number;
}
// ํจ์ ์ค๋ฒ๋ก๋ : ์ด ๋ถ๋ถ ์์ผ๋ฉด ์๋ฌ
// ์ ๋ฌ๋ฐ์ ๋งค๊ฐ๋ณ์์ ๊ฐ์, ํ์
์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์ ์ํ
function join(name:string, age:number):User
function join(name:string, age:string):string
function join(name: string, age: number | string): User | string {
if (typeof age == 'number') {
return {
name,
age,
};
} else {
return '๋์ด ์ซ์๋ก ์
๋ ฅ';
}
}
// 'ํจ์ ์ค๋ฒ๋ก๋' ์์ผ๋ฉด ์๋ฌ
// Sam, Jane์ ๋ฐํ ํ์
์ด ๊ฐ๊ฐ User, string ์ด๋ผ๊ณ ํ์ ํ ์ ์์
const Sam: User = join('Sam', 10);
const Jane: string = join('Jane', '10');
// ํจ์ ์ค๋ฒ๋ก๋๋ก ํด๊ฒฐ
class Car {
color: string; // ์ด ๋ถ๋ถ TypeScript์์๋ ํ์
constructor(color: string) {
this.color = color;
}
}
this.ํ๋กํผํฐ๋ช
์ ์ง์ ํด์ฃผ๋ ๊ฒ์ ์๋ฌXclass Car {
constructor(public color: string) {
this.color = color;
}
}
class Car {
constructor(readonly color: string) {
this.color = color;
}
}
#๋ณ์๋ช
๋ก ํํ ๊ฐ๋ฅfunction getSize<T>(arr: T[]): number {
return arr.length;
}
const arr1 = [1, 2, 3];
getSize<number>(arr1);
const arr2 = ['a', 'b', 'c'];
getSize<string>(arr2);
// <T> ๋ช
์ํ์ง ์์๋ ์๋์ผ๋ก ํ์
๋ถ์ฌ
const arr3 = [false, true, true];
getSize(arr3);
interface Mobile<T> {
name: string;
price: number;
option: T;
}
// const m1:Mobile<object>
const m1: Mobile<{ color: string; coupon: boolean }> = {
name: 'm1',
price: 1000,
option: {
color: 'pink',
coupon: false,
},
};
const m2: Mobile<string> = {
name: 'm2',
price: 2000,
option: 'good',
};
Pick์ ๊ฐ์ฒด ํ์ T์์ ํน์ ์์ฑ๋ค๋ง ์ ํํ์ฌ ์๋ก์ด ํ์ ์ ๋ง๋ค ๋ ์ฌ์ฉ
type MyType = {
name: string;
age: number;
address: string;
};
type SelectedType = Pick<MyType, 'name' | 'age'>;
// SelectedType: { name: string; age: number; }
SelectedType์ MyType์์ 'name'๊ณผ 'age' ์์ฑ๋ง์ ์ ํํ ์๋ก์ด ํ์
๊ฐ์ฒด ํ์ T์์ ํน์ ์์ฑ๋ค์ ์ ์ธํ ๋๋จธ์ง ์์ฑ๋ค๋ก ์๋ก์ด ํ์ ์ ๋ง๋ค ๋ ์ฌ์ฉ
Pick์ ๋ฐ๋ ๊ฐ๋
type MyType = {
name: string;
age: number;
address: string;
};
type NewType = Omit<MyType, 'address'>;
// NewType: { name: string; age: number; }
NewType์ MyType์์ 'address' ์์ฑ์ ์ ์ธํ ๋๋จธ์ง ์์ฑ๋ค๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ํ์
<ํ์
>
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;