아래 링크는 원본입니다. 해석이 부족해도 양해 부탁드립니다..ㅎㅎ
www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html#types-by-inference
```
프로그래머들에게 유용하기 위해, 우리는 간단한 데이터 단위(numbers, strings, structures, boolean values, and the like.)로 작동되기를 원합니다. Ts는 Js에서 기대된 type들을 지원하며, 추가 type들을 던져 도움을 줍니다.
Boolean
가장 기본 데이터유형은 Js와 Ts에서 boolean으로 불리는, true/false입니다.
Number
Js에서와 마찬가지로, Ts에서 모든 숫자는 부동 소수점 값이나 biginteger입니다. 부동 소수점 값은 숫자 type을 갖고, biginteger은 bigint type을 갖습니다. 16진수 또는 10진수 리터럴 이외에도, Ts는 Es2015에 도입된 이진 및 진수 리터럴도 지원합니다.
String
Js에서 웹 페이지나 서버를 만드는 기본적인 부분은 텍스트 데이터와 작동합니다. 다른 언어들과 마찬가지로, 우리는 이 텍스트 데이터 type을 참조하기 위해 string type을 사용합니다. Js와 마찬가지로, Ts또한 문자 데이터를 “”나 ‘’로 감쌉니다.
당신은 또한 다중 문자열을 만들거나 표현 식을 포함한 템플릿 문자열을 사용할 수 있습니다. 이 문자열들은 ``로 감싸지고 ${}형태로 표현식이 포함됩니다.
아래 예시는 sentence를 선언한 것과 동일합니다
Array
Js와 마찬가지로 Ts는 배열 값을 사용하게 해줍니다. 배열 type은 두 가지 방식으로 작성됩니다. 첫번째로 요소 유형 다음에 []를 오게하는 형식입니다. Ex: number[], string[]
두번째 방식은 generic 배열 type(Array<elemType>)입니다.
Tuple
Tuple type은 숫자 요소로만 구성된 배열을 표현하도록 하지만, 항상 그럴 필요는 없습니다. 예를 들면 당신은 문자열과 숫자로 구성된 값을 원할 수도 있습니다.,
주어진 요소의 index에 접근할 때, 맞는 type만 검색됩니다.
요인의 index 바깥을 접근하면 에러와 함께 실패합니다.
Enum
Js의 기본적인 데이터 유형에서 추가된 유용한 것은 enum 입니다. C#에서와 같이, enum은 숫자 값의 집합에 더 친숙한 이름을 제공합니다. .(Red:0, Green: 1, Blue: 2)
기본적으로, enum은 0을 시작으로 멤버별 숫자를 부여합니다. 당신은 멤버의 값 중 한 개를 설정함으로써 구조를 바꿀 수 있습니다. 예를 들면, 우리는 이전 예시에서 0대신 1로 시작할 수 있습니다.(Red:1, Green: 2, Blue: 3)
혹은 모든 멤버별 값들을 설정할 수 있습니다.
Enum의 유리한 특징은 숫자 값에서 enum의 해당 값 이름으로 이동할 수 있다는 것입니다. 예를들면, 만약 값이 2이지만 enum에서 매핑된 값이 확실하지 않은면, 해당 이름을 조회할 수 있습니다.
Unkown
어플 작성시 우리가 모르는 변수 값의 타입을 묘사하고 싶을 때 필요합니다. 이 값들은 유저나, api상 의도적으로 모든 값들을 수용하기를 원하는 순간으로부터 옵니다. 이 경우 우리는 컴파일러와 미래 리더기에게 변수는 어떤 것도 될 수 있다고 말할 수 있는, type을 제공하길 원합니다. 그래서 우리는 변수에 unknown type을 제공합니다.
만약 당신이 unkown type의 변수를 가지고 있으면, 당신은 typeof 확인, 비교, 나중에 다룰 향상된 type 보호?를 통해 그것을 구체화할 수 있습니다.
Any
몇몇 상황에서, 모든 type 정보는 이용이 불가하거나 declaration에 불필요한 노력이 필요합니다. 이것은 3rd 라이브러리나 Ts 없이 작성된 코드로부터 발생할겁니다. 이 경우, 우리는 opt-out으로 type을 확인하길 원합니다. 그러기 위해, 우리는 이 값에 any type을 붙입니다.
Any type은 컴파일 되는 동안 당신에게 type확인을 opt-in과 opt-out으로 점진적 허용하기에, Js와 함께 작업하는 방식으로 강력합니다.
Unkown과 다르게, any type의 변수는 임의의 존재하지 않은 속성에 접근하도록 해줍니다. 이 속성들은 함수를 포함하고, Ts는 그들의 존재나 type을 확인하지 않습니다.
Any는 당신의 객체를 통해서도 전파됩니다.
Any의 편리함은 type 안전을 잃는 대가로부터 오는 것을 기억하세요. Type 안전은 Ts를 사용하는 주된 동기중 한 개이고, 당신은 불필요할 때 any사용을 피해야만 합니다.
Void
Void는 any와 약간 반대입니다. 당신은 아무 값도 리턴하지 않는 함수의 타입으로 이것을 사용할것입니다.
당신은 그곳에 null(오직 -–strictNummChecks가 구체화 되지 않으면, 다음장을 보세요)이나 undefined만 지정할 수 있기에, 변수의 type을 void로 선언하는 것은 쓸모없습니다.
Null and Undefined
Ts에서 undefined와 null은 undefined와 null로 불리는 그들의 type을 가지고 있습니다. Void 만큼, 그들은 그들 자신에게 매우 불필요합니다.
기본적으로 null 과 undefined는 다른 모든 type의 서브 type입니다. 이는 당신이 number에 null과 undefined를 할당할 수 있음을 의미합니다.
그러나 -–strictNummChecks을 사용할 때, null과 undefined는 unkown, any에 할당될 수 있습니다(한 개의 예외로, undefined는 void에도 할당됩니다). 이것은 공통된 에러를 피하게 해줍니다. string, null, undefined중 전달하려는 경우에는, 당신은 string | null | undefined의 유니온 type을 사용할 수 있습니다.
유니온 type은 우리가 다음 장에서 다룰 주제입니다
As a note: -–strictNummChecks을 사용하도록 격려하지만, 이 handbook의 목적을 위해 우리는 그것을 잠시 사용하지 않겠습니다.
Never
Never type은 절대 발생하지 않을 값의 type입니다. 예를 들어, never은 항상 예외를 리턴하거나, 리턴이 없는 함수 표현식의 type입니다. 변수들은 절대 true가 될 수 없는 type 보호에 의해 좁혀질 때, never type을 가집니다.
Never type은 모든 type의 서브 type이 되거나, 할당될 수 있습니다. 그러나 다른 type은 never(본인을 제외한)에 서브 type이 되거나, 할당될 수 없습니다. 심지어, any도 never에는 할당될 수 없습니다
Never을 리턴하는 함수 예시들입니다.
Object
Object는 number, string, boolean, bigint, symbol, null, or undefined와 같은 원시 tpye이 아닌 type입니다. Object type에서는 Object.create을 더 잘 나타낼 수 있습니다. 아래는 예시입니다.
당신은 보통 이것을 사용하지 않을 것입니다.
Type assertions
종종 당신은 Ts가 하는 것보다 더 많은 것을 알게 되는 상황에 놓이게 됩니다. 보편적으로, 최근 type보다 더 구체적인 type이 있음을 당신이 알 때 발생합니다.
Type assertion은 컴파일러에게 ‘나를 믿어, 내가 뭘 하는지 나는 알아’를 말해주는 방법입니다. Type assertion은 다른 언어에서 type cast와 같지만, 데이터를 재구성하거나 특별한 검사를 수행하지는 않습니다. 그것은 런타임에 영향이 없고, 컴파일러에 의해서만 사용됩니다. Ts는 당신이 특별한 확인을 수행한다고 가정합니다.
Type assertions는 두 폼을 가지고 있습니다.
하나는 as문법입니다:
다른 버전은 angle-bracket 문법입니다:
두 예시는 동일합니다. 다른 하나보다 하나를 사용하는 것은 주로 선호되는 선택입니다. 그러나, Jsx와 사용되는 Ts는 as스타일만 허용됩니다.
Let에 대한 참고사항
당신은 당신이 주로 사용한 Js의 var대신, 우리가 let을 사용해와서 눈치 채셨을 것입니다. Let은 Ts 개발이 가능하게하는, Js의 최신 구조입니다. 당신은 handbook reference의 다양한 선언에서, 어떻게 let과 const가 var의 많은 문제를 해결했는지를 읽을 수 있을 것입니다.
Number, String, Boolean, Symbol and Object에 대해
Number, String, Boolean, Symbol and Object type은 소문자 버전과 동일하다는 점은 생각될 수 있습니다. 이 type들은 언어의 기본요소로 언급하지 않으며, 사용되서는 안됩니다
대신에 number, string, boolean, object and symbol을 사용하세요
```
'개발 > typescript' 카테고리의 다른 글
typescript docs 번역본 #4 (Literal types) (0) | 2021.01.25 |
---|---|
typescript docs 번역본 #3 (functions) (0) | 2021.01.20 |
typescript docs 번역본 #2 (interfaces) (0) | 2021.01.19 |
typescript docs 번역본 #0 (0) | 2021.01.12 |
typescript를 시작하며 (0) | 2021.01.11 |