let 이름 :string = 'kim'
let 이름 :string[] = ['kim', 'park']
let 나이 :{ age : number } = { age : number }
let 이름 :string | number = 'kim';
변수명 :타입명으로 작성
타입으로는 string, number, boolean, undefined, [], {} 등이 존재
string | number 는 uniontype
(단 uniontype은 연산에서 narrowing 필수)
type MyObject = {
name? : string,
age : number
}
let 철수 :MyObject = {
name : 'kim',
age : 50
}
--------------------------------------------------------------------------------
type MyObject = {
[key :string] : number,
}
let 철수 :MyObject = {
age : 50,
weight : 100,
}
type에 ?이 붙으면 선택사항, 예를 들어 name? :string 일 경우 string | undefined와 동일!
object안의 속성이 미정이라면 [key :string] :number 같은 지정도 가능
function 함수명(x :number | string) {
if (typeof x === 'number'){
return x * 2
}
}
함수는 파라미터와 return값의 타입을 지정, 여기서 return값을 void로 선언하면 return 값이 없어도 에러가 나지 않음
class Person {
name;
constructor(name :string){
this.name = name;
}
}
class도 type 설정이 가능
let 이름: any = 'kim';
이름 = 123;
이름 = undefined;
이름 = [];
any 타입을 사용하면 아무 자료나 사용할 수 있음
☆실드해제☆
하지만 any 타입을 사용하는 건 typescript를 사용하는 이유가 없어짐
let 이름: unknown = 'kim';
이름 = 123;
이름 = undefined;
이름 = [];
any 타입보다는 안전한 unknown, 역할은 비슷하지만 unknown은 unknown이라는 타입을 유지하므로 다른 곳에 사용하려고 할 때 에러가 발생함(any는 x!)