Basic Types
link TypeScript-Handbook/Basic Types.md at master · Microsoft/TypeScript-Handbook · GitHub
Introduction
열거 형을 제공한다.
Boolean
1let isDone: boolean = false;
Number
- ECMAScript 2015에서 고새된 바이너리와 8진법도 가능하다
1234let decimal: number = 6
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0O744
String
- type스크립트에서도 싱글 qoute나 double qoute (쌍따옴표) 모두 사용 가능하다
- java에서는 상따옴표만 사용가능
12let color: string= "blue";
color = 'red';
- 템플릿도 사용 가능 하다 이때는 ` 기호를 사용해야한다. 템플릿자체가 멀티라인도 가능함
TypeScript example
12345let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }.
I'll be ${ age + 1 } years old next month.`;
to Javascript
123var fullName = "Bob Bobbington";
var age = 37;
var sentence = "Hello, my name is " + fullName + ".\n\nI'll be " + (age + 1) + " years old next month.";
Array
- Typescript에서도 array를 사용할 수 있다.
- 선언하는 두가지 방법
123let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
Tuple
- 튜플을 array의 형식처럼 지원한다. 튜플 안의 type은 동일할 필요가 없지만 사용 할때는 지정한 타입과 동일하게 사용해야함
123456// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10]; // OK
// Initialize it incorrectly
x = [10, "hello"]; // Error
Enum
- 도움이 되는 데이터타입이 enum 이다. c#처럼 numeric 값들을 조금더 친근하게 셋팅할 수 있다.
123enum Color {Red, Green, Blue}
let c: Color = Color.Green;
- javascript Converting
123456789var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"] = 1] = "Green";
Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
var c = Color.Green;
{0: "Red", 1: "Green", 2: "Blue", Red: 0, Green: 1, Blue: 2}
Any
- Any 타입은 변수의 값이 숫자였다가 String값이 였다가 boolean 마음대로
1234567891011let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
// 오브젝트는 할당만 가능하고 임의의 메소드를 사용 못한다.
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.
- 이것은 java에서는 상상도 못할 조금 신세계
123let list: any[] = [1, true, "free"];
list[1] = 100;
Void 타입??
- Void 는 리턴값이 없는 메소드에서 지정할 수 있고
- void 타입에 바인딩 할 수 있는 데이터는 오직 null 과 undefined만 적용 할 수 있다.
12345function warnUser(): void {
console.log("This is my warning message");
}
let unusable: void = undefined;
Null and Undefined
- null 과 undefined는 모든 타입의 서브 타입이다
- 즉 number에 null을 할당 할 수 있다.
- union type도 있긴 한데 나중에 확인 하겠다.
12345// Not much else we can assign to these variables!
let u: undefined = undefined;
let n: null = null;
// subtype 증명
Never
- 이해하기로는 반환값에 절대로 나타날수 없는 타입으로 사용할때 never를 사용한다.
123456789101112131415// Function returning never must have unreachable end point
function error(message: string): never {
throw new Error(message);
}
// Inferred return type is never
function fail() {
return error("Something failed");
}
// Function returning never must have unreachable end point
function infiniteLoop(): never {
while (true) {
}
}
Object
- 잘 이해가 안감 ㅎㅎㅎ
- object 는 number, string, boolean, symbol, null, undefined가 아닌 non-primitive type 이다
- Object.creat Api를 더 잘 표현할 수 있다.
123456789declare function create(o: object | null): void;
create({ prop: 0 }); // OK
create(null); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
Type assertions
- 다른 언어의 형변환과 비슷하지만 특수 검사나 데이터 재구성을 하지 않으며 런타임시 영향을 미치지는 않는다 다만 컴파일러에서만 사용한다. 두가지 방법이 있는데 java처럼 angle-bracket syntax를 사용하는 방법이 있고 다른 하나는 as - syntax 를 사용하는 방법이 있다.
12345678// angle-bracket
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
// as syntax
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
No comments:
Post a Comment