let str: string = 'hello';
let num: number = 10;
let show:boolean = true;
let arr: Array<number> = [1, 2, 3];
let heroes: Array<string> = ['Capt', 'Thor', 'Hulk', 10];
let items: number[] = [1, 2, 3];
배열과 달리 각 인덱스별 타입을 다르게 설정할 수 있음
let address: [string, number] = ['gangnam', 10];
let person: object = {
name: 'capt',
age: 100
};
let person2: { name: string, age: number } = {
name: 'jerry',
age: 10
};
function add(a: number, b: number) : number{
return a + b;
}
function sum(a: number, b: number){
return a + b;
}
function log(a: string, b?: string,c?:string) {
console.log(a);
if (b) {
console.log(b);
}
if (c) {
console.log(c);
}
}
function logMessage(value: any) {
console.log(value);
}
logMessage('heello');
logMessage(100);
interface User{
age: number;
name: string;
}
let jerry: User = {
age: 30,
name: 'jerry'
}
let jerry2 = {
name: 'jerry',
age: 30
}
function getUser(user: User) {
console.log(user);
}
getUser(jerry);
getUser(jerry2);
interface SumFunction{
(a: number, b: number): number;
}
let sum: SumFunction;
sum = function (a: number, b:number): number {
return a + b;
}
interface StringArray{
[index: number]: string;
}
let arr2: StringArray = ['a', 'b', 'c'];
interface StringRegexDictionary{
[key: string]: RegExp;
}
let obj2: StringRegexDictionary = {
cssFile: /\.css$/,
jsFile: /\.js$/,
}
obj2['cssFile'] = /a.css/;
interface Person{
name: string;
age: number;
}
interface Developer extends Person{
language: string;
}
let jerry: Developer = {
language: 'ts',
age: 100,
name: 'jerry'
}
type Mystring = string;
let str2: Mystring = 'heelo';
let jerry5: string | number | boolean;
function logMessage2(value: string | number) {
if (typeof value === 'number') {
value.toLocaleString();
}
else if (typeof value === 'string') {
value.toString();
}
throw new TypeError('value must be string or number');
}
logMessage2('helelo');
logMessage2(1000);
interface Developer2 {
name: string;
skill: string;
}
interface Person{
name: string;
age: number;
}
function askSomeone(someone: Developer2 | Person) {
// 공통 요소만 사용가능
console.log(someone.name);
// 검증없이 바로 사용 불가
// someone.skill
// someone.age
}
// intersection을 사용하는 경우, Developer2와 Person 두가지 타입을 모두 충족시킬수있는 새로운 Type이 적용
function askSomeone2(someone: Developer2 & Person) {
console.log(someone.name);
console.log(someone.skill);
console.log(someone.age);
}
//union과 다르게 argument를 모두 넘겨줘야함
askSomeone2({ name: '디벨로퍼', skill: 'nodejs', age:30 });
// 초기화 없을 경우 0부터,
// 초기화 할 경우, 초기화 한 값부터 +1증가
enum Shoes {
Nike = 10,
Adidas,
Prospects,
}
let myShoes = Shoes.Nike;
console.log(myShoes);
enum StrShoes{
Nike = '나이키',
Adidas = '아디다스',
}
let strShoes = StrShoes.Adidas;
console.log(strShoes);
enum Answer{
YES = 'Y',
NO = 'N'
}
function askQuestion(answer: Answer) {
if (answer === Answer.YES) {
console.log('정답입니다.');
}
else if (answer === Answer.NO) {
console.log('오답입니다.');
}
}
askQuestion(Answer.YES);
askQuestion(Answer.NO);
[인프런] 타입스크립트 입문 - 기초부터 실전까지
[공식문서] https://www.typescriptlang.org/docs/
[타입스크립트핸드북] https://joshua1988.github.io/ts/intro.html