studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[Chapter 5 - Declaration] .d.ts #22

Open junthus opened 7 years ago

junthus commented 7 years ago

.d.ts

헤더 파일, 컴파일 단계에서 ts 컴파일러가 사용 (그 이전에 린트가 난리침)

  • 사용 가능한 함수와 속성의 구문/구조를 설명 (스펙 정의)
  • 구현은 없음, 고로 js 코드를 생성하지 않음
  • 외부 라이브러리를 사용하려면 필요
  • 내 라이브러리를 딴 데서 사용하게 하려면 만들어 주면 좋음 (tsc -d)
  • tsconfig.json 에다 읽어올 외부 타입 지정 or Triple-Slash-Directives
    {
    "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "strictNullChecks": false,
    "lib": [
    "dom",
    "es6"
    ],
    "typeRoots": [
    "node_modules/@types"
    ],
    "types": [
    "hammerjs",
    "jasmine",
    "node",
    "source-map",
    "uglify-js",
    "webpack"
    ]
    },
    "exclude": [
    "node_modules",
    "dist"
    ]
    }
    /// <reference types="..." />
    /// <reference path="..." />
  • 프로젝트 루트 하위에 선언한 .d.ts 파일은 컴파일러가 자동으로 확인
  • typings
  • 그런데 마소가 그냥 npm install 하는 것을 권고해서 typings 는 망조

Hello! .d.ts

  1. 외부 라이브러리에서 가져온 것을 쓰고싶다
    // external.js
    var CONTACT_EMAIL_ARRAY = [
    "help@site.com",
    "contactus@site.com",
    "webmaster@site.com"
    ];
    // my ts code
    class GlobalLogger {
    static logGlobalsToConsole() {
        for(let email of CONTACT_EMAIL_ARRAY) {
            console.log(`found contact : ${email}`);
        }
    }
    }

자주 보게될 에러

error TS2304: Cannot find name 'CONTACT_EMAIL_ARRAY'
번역)CONTACT_EMAIL_ARRAY라는 변수 스펙 정의를 내놓지 않으면 나는 일을 하지 않겠다.

  1. 할 일 - global.d.ts 만들기
    // global.d.ts
    declare var CONTACT_EMAIL_ARRAY: string [];
    • ts 컴파일러에 외부 js 변수의 구조를 설명

declare

책 - 정의 객체 (또는 변수 또는 함수)의 구현이 런타임에 해석된다는 뜻의 키워드. ts doc - (난 그런말 안 했는데...) "선언"

junthus commented 7 years ago

global.d.ts 는

ts 문서의 내용으로 미루어 봤을 때

typing.d.ts 는 어디서 생기는 이름인지 모르겠는데.. @denzels 어디서 보신 건지 알려주시면 찾아볼게요 ~