1) Type Assertion(어써선=단언/역설)과 any타입 사용하기
Assertion 이란 용어는 단언하다,확고히 말하다(역설)의 의미를 내포하는데요.
Type Assertion은 개발자가 해당 타입에 대해 정확한 확신이 있을 때 사용하는 타입 지정 방식으로 타입스크립트 컴파일러에게 이 값은 반드시 이런 타입이여해,이런 타입일거야 하고
컴파일러에게 알려주고 타입형을 변환하는 용도로 사용합니다.
Type Assertion으로 지정되는 값은 컴파일러가 타입체크를 하지않고 데이터의 구조도 신경쓰지 않습니다.
주로 타입스크립트의 타입 캐스팅(타입형변환)시 사용합니다.
타입 단언은 타입스크립트 컴파일러보다 개발자가 더 해당 타입을 잘 알고 있을 때 사용합니다.
Type Assertion은 타입의 형을 변환할때 사용하는 방법으로 as키워드를 사용하거나 angle-bracket <타입> 문법을 사용해 구현할수 있습니다.
D:\TypeScript\2-TS-Basic 폴더내에 type-assertion.ts파일을 생성 합니다.
A) Type Assertion 예시코드 코딩하고 실행하기
-하기 코드와 같이 코딩을 진행합니다.
-자세한 내용은 주석을 참고바랍니다.
-type-assertion.ts
//Case1)타입 어서션 개념 이해하기
//any타입은 타입이 어떤 타입인지 정확히 모를때 저정할수 있는 타입을 말합니다.
//프론트/백엔드 ,외부시스템, 타팀이 만든 결과 데이터를 받을때 정확한 타입을 모를때 사용합니다.
//타입스크립트 기반 애플리케이션을 개발하면서 any타입을 남발하는것은 좋지 않습니다.
//any타입으로 정의된 변수는 데이터 타입을 변경해 값을 할당해도 문제가 되지 않는다.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
console.log("notSure", notSure);
let fullName: any = "Eddy.Kang";
//타입 어서션 방법1: as키워드 사용
//any 타입인 fullName을 문자열 타입으로 변환하는 방법1 : fullName as string
let fullNameLength1: number = (fullName as string).length;
//타입 어서션 방법2: angle-bracket 문법 사용 (<타입>변수)
//any 타입인 fullName을 문자열 타입으로 변환하는 방법2 : <string>fullName
let fullNameLength2: number = (<string>fullName).length;
const companyName = "MSoftware" as string;
console.log("companyName===>", fullNameLength1, fullNameLength2, companyName);
//User Interface정의
interface User {
id: number;
name: string;
email: string;
telephone?: string; //선택적(옵셔널) 속성은 속성명?로 정의
}
//사용자 객체변수/타입 정의 및 값 할당
//선택적(옵셔널) 속성은 반드시 값을 할당하지 않아도 됨.
let user = {} as User;
user.id = 1;
user.name = "Eddy.Kange";
console.log("user===>", user);
//컴파일 및 실행 명령어
//tsc --strictNullChecks type-assertion.ts
//node type-assertion.js
-코딩을 모두 진행 저장하고 아래 명령어를 통해 터미널창에서 ts파일을 컴파일하고 컴파일 결과.js파일을 실행합니다.
D:\TypeScript\2-TS-Basic
tsc --strictNullChecks type-assertion.ts
node type-assertion.js
B)코딩 핵심 내용 설명
-any타입은 타입이 어떤 타입인지 정확히 모를때 저정할수 있는 타입을 말합니다.
-any타입은 프론트/백엔드 ,외부시스템, 타팀이 만든 결과 데이터를 받을때 정확한 타입을 모를때 사용합니다.
-타입스크립트 기반 애플리케이션을 개발하면서 any타입을 남발하는것은 좋지 않습니다.