[typescript] 4. typescript 변수
<typescript 변수 할당 구조>
1. 선언자
- 변수 앞에 위치하는 키워드
- 선언자에 따라서 변수의 scope가 달라진다.
1) scope level
- 함수 level : 선언자가 함수 level일 경우 해당 변수는 함수 안에 개별 선언으로 인식 된다.
- 블록 level : 선언자가 블록 level일 경우 해당 변수는 블록 안에 개별 선언으로 인식 된다. - 전역 level : 선언자가 전역 level일 경우 해당 변수는 프로그램 모든 범위에서 개별 선언으로 인식 된다.
2) scope의 운선 순위
- 블록 level > 함수 level > 전역 level
항목 | scope (영향 범위) | 특징 | ||
함수 | 블록 level | 전역 level | ||
var | O | X | O | 호이스팅 이된다. (호이스팅 : 변수를 나중에 선언해도 실행시 해당 선언을 코드 최상단으로 올리는 것을 말한다) Ex) var test = 1 |
let | O | O | O | 1. 같은 블록 내에서 같은 이름의 변수를 중복해서 선언 할 수 없다 2. 변수를 초기화 하기 전에는 변수에 접근 할 수 없게 해서 호이스팅을 방지 3. 선언할 변수에 블록 레벨 스코프를 적용 Ex) let test = 1 |
const | O | O | O | 1. 선언과 변수 초기화를 동시애 해야 한다. 2. 변수 초기화 후에는 값을 변경 할 수 없다 Ex) const test = 1. |
2. type - 기본 타입
- typescript에서는 타입을 지정하지 않으면 변수에 할당되는 값에 따라 타입이 정해 집니다.
- 유통성있게 타입을 명시하면 컴파일시 타입 검사를 하고 타입이 없으면 실행 시간에 타입을 정합니다.
Ex) 실행 시간에 타입을 설정하는 예제 코드
type | 설명 |
string | 문자열을 저장 var str: string = "test" |
number | 숫자를 저장 var dec: number = 1 |
boolean | true, false 를 저장 var bool: boolean = true; |
symbol | - Symbol() 함수를 사용하여 고유하고 수정 불가능한 타입을 만들어 냅니다. 객체 속성의 식별자로 사용 됩니다. - 사용법을 잘 모르겠음 let sym = Symbol('hello'); |
enum | - number type에서 확장된 type으로 Enume의 첫번째 요소는 0부터 시작 합니다. - enum type에서 요소만 할당 가능합니다. enum weekday { Mon, Tue, Wd, Thu = 4 } let day: weekday = weekday.Mon; console.log("enum Thu :" , weekday.Thu) console.log("enum Thu :" , weekday["Thu"]) |
문자열 리터럴 | - string type의 확장 형으로 사용자 정의 타입에 정의한 문자열만 할당 가능 합니다. type EventType = "keyup" | "mouseover"; let event_name: EventType = "keyup"; |
3. type - 기타 타입
type | 설명 |
union | - 2개 이상의 타입을 하나 타입으로 정의한 타입 입니다. - 정의한 타입만 할당 가능 합니다. var x: string|number = 1; x = "2"; |
intersection | - 2개의 타입을 합쳐서 하나의 타입으로 정의한 타입 입니다. - 다음 코드에서 catbird 변수가 intersection type인 Cat & Bird로 선언되어 있으므로 할당 객체는 leg, wing 속성만 허용 합니다. interface Cat { leg: number;} interface Bird { wing: number;} let catbird: Cat & Bird = { leg: 4, wing: 2} |
void | - 빈 값을 나타내는 타입 입니다. 1) 함수에 반환 값이 없을때 void 타입을 선언 합니다. function test(): void { console.log('hello') } 2) undefine을 받을때 사용합니다. let unusable: void = undefined; |
undefine | - 어떤 한 빈 값으로도 초기화 되지 않는 타입 let undefined_value: undefined = undefined; |
null | - 빈 객체로 초기화 합니다. var person: any = { name: "happy"}; person = null; |
any | - 어떤 타입이든 다 받을 수 있는 type 입니다. let any_type: any = "string"; any_type = 1; any_type = {}; |
4. type - 객체 타입
type | 설명 |
Array | - 배열 요소에 대응 하는 타입 입니다. - 숫자형 Array일 경우 type 부분 number[] let items: number[] = [ 1,2,3]; - 문자열 Array일 경우 type 부분 string[] let items: string[] = [ "1", "2", "3"]; |
generic Array | - 배열 type을 Array<T> 형태로 선언 합니다. T는 타입을 의미합니다. let genArray: Array<number> = [ 1,2,3,4]; console.log(genArray); - T 를 union으로 하게 되면 요소의 타입을 제약 할 수 있습니다. Array 타입모다 더 다양한 요소를 넣을 수 있습니다. let genArrayA: Array<number | string> = [ 1,2,3,4, "5", "6"]; console.log(genArrayA); |
Tuple | - 배열 요소가 n개로 정해 졌을때 각 요소 별로 type을 지정합니다. let items: [number, string] = [ 1,"33"]; let items1: [number, string, string] = [ 1,"2", "3"]; |
Function | 호출 시그니쳐를 포함 하도록 정의한 타입 입니다. |
생성자 |
|
class |
|
interface |
|
5. type - javascript에서 지원하는 내장 객체 타입
type | 설명 |
String | - String 전역 객체를 이용하여 string타입 으로 할당 - 객체 타입임으로 valueOf로 값을 확인 let gstring = new String("test"); console.log(gstring.valueOf()); |
Number | - Number 전역 객체를 이용하여 number 타입으로 할당 - 객체 타입임으로 valueOf로 값을 확인 let gnumber = new Number(1); console.log(gnumber.valueOf()); |
Boolean | - Bloolean 전역 객체를 이용하여 boolean 타입으로 할당 - 객체 타입임으로 valueOf로 값을 확인 let gbool = new Boolean(true); console.log(gbool.valueOf()); |
댓글 없음:
댓글 쓰기