let testNum: number = 11;
testNum = 456;
console.log(testNum); // 456
let testAray: string[] = [];
testAray = ['arr1', 'arr2'];
console.log(testAray); // ['arr1', 'arr2']
name뒤에 ?를 붙이면 name 이라는 속성이 들어올 수도 있고 안 들어올 수도 있다는 의미 (옵션)
let testObj: { name?: string } = { name: 'kim' };
testObj = { name: 'lee' };
console.log(testObj); // {name: 'lee'}
타입을 두개 혹은 그 이상을 합쳐서 새로운 타입을 만들어 낸다.
string이 가득담긴 array 혹은 숫자가 들어올 수 있다는 의미
let multiName: string[] | number = 123;
multiName = ['sum'];
multiName = 123;
console.log(multiName);
let 회원: number | string | boolean = '셋중아무거나';
회원; // 1)
회원 = 123; //2)
1) 확인해보면 string 타입으로 고정되어있지만
2) 다시 넘버를 부여하면 가변적으로 변한다.
type MyType = string | number;
let typeTest: MyType = 888;
console.log(typeTest);
function func(x: number): number {
return x * 2;
}
console.log(func(12));
파라미터변수?:타입
{age?:number}
function 함수(x: number): void {
1 + 1;
}
type MemberArr = [number, boolean];
let seul: MemberArr = [23, true];
type MemberObj1 = {
name: string;
};
let lee1: MemberObj1 = {
name: 'test',
};
console.log(lee1);
type MemberObj2 = {
// 모든 Obj 속성 : ~~~ => string으로 들어오는 모든 obj속성의 타입은 number
[key: string]: number;
};
let lee2: MemberObj2 = {
aaa: 123,
bbb: 456,
// ggg: 'number 타입만 올 수 있다! 문자열 넣으면 에러',
};
console.log(lee2);
class User {
name: string;
constructor(name: string) {
this.name = name;
}
}
: 아무타입이나 넣을 수 있다.
// let 이름1: any;
let 이름1: unknown;
이름1 = 123;
이름1 = {};
let 변수1: string = 이름1; // 1)
이름1 - 2; // 2)
let 나이: string | number; //1)
나이 + 1; // string 또는 number 라는 새로운 '타입'이므로 허용되지 않음
string 타입 +1 (ok)
number 타입 +1 (ok)
string | number 타입 +1 (no)
let 나이2: unknown = 1;
나이 - 1; // 2)
// 넘버스트링 유니온 + 문자
function myFunc3(x: number | string): void {
console.log(x + '문자');
}
myFunc3(1);
// 넘버스트링 유니온 + 문자
function myFunc3(x: number | string): void {
console.log(x + '문자');
}
myFunc3('문자문자');
// 넘버스트링 유니온 + 넘버
function myFunc3(x: number | string): void {
console.log(x + 3); // 에러
}
myFunc3(1);
// 넘버스트링 유니온 + 넘버
function myFunc3(x: number | string): void {
console.log(x + 3); // 에러
}
myFunc3('문자문자');
let user: string = 'kim';
let age: undefined | number = undefined;
let married: boolean = false;
let 철수: (string | number | undefined | boolean)[] = [user, age, married];
let 학교: {
score: (number | boolean)[];
teacher: string;
friend: string | string[];
} = {
score: [100, 97, 84],
teacher: 'Phil',
friend: 'John',
};
학교.score[4] = false;
학교.friend = ['Lee', 학교.teacher];
// 1)
function myFunc(x?: number): void {
console.log(x)
}
// 2)
function myFunc(x: number | undefined): void {
console.log(x)
}
1) 변수 ?: number
는
2) 변수:number|undefined
와 같다
JS에서 myFunc()
를 하면 x라는 파라미터는 저절로 undefined가 된다.