2016-09-24 6 views
1

official document about Typescript module을 읽을 때 약간 혼란 스럽습니다.Typescript에서 모듈을 가져 오는 올바른 방법은 무엇입니까?

declare function require(moduleName: string): any; 
// why declare require? 
import { ZipCodeValidator as Zip } from "./ZipCodeValidator"; 
// Zip is being imported here, right? 
if (needZipValidation) { 
    let ZipCodeValidator: typeof Zip = require("./ZipCodeValidator"); 
    // Zip is already imported before if statement, why import again? 
    let validator = new ZipCodeValidator(); 
    if (validator.isAcceptable("...")) { /* ... */ } 
} 

Question1 :

import { ZipCodeValidator as Zip } from "./ZipCodeValidator"; 

코드 라인이 상기 후 의해, ZipCodeValidator 이미로드되어, 현재 파일의 모듈로 제공 지퍼. 나중에 if 조건에서 다음 코드 줄에서 다시로드해야하는 이유는 무엇입니까?

let ZipCodeValidator: typeof Zip = require("./ZipCodeValidator"); 

주목 : 다른 모듈을 다른 방법으로로드합니다. 하나는 가져 오기이고 다른 하나는 필요합니다. 다른 방법을 사용하는 이유는 무엇입니까?

Question2 :

왜 함수 서명을 필요로 선언해야합니까? 선언은 무엇을합니까? 선언 된 경우 구현은 어디에 있습니까?

답변

1

보여주는 예제는 모듈을 가져 오는 특별한 방법을 구현하는 것입니다. 모듈을 조건부로 가져 오는 방법을 보여줍니다. 이것은 내가 당신이 항상 할 필요가 없다고 생각할 특별한 경우입니다.

그래서, 당신은이 작업을 수행 한 후, 특히

  1. 귀하의 질문에 대답 전망 : TS 컴파일러는 우편 번호 만 입력 위치에 사용하는 경우, 다음로드되지 것을 알고 똑똑 import { ZipCodeValidator as Zip } from "./ZipCodeValidator"; 모듈. 두 번째 require 문은 실제 가져 오기가 이루어지는 곳입니다.

  2. require 키워드에 대해 TS가 알 수 있도록하기 위해 성명이 필요합니다. node.js에 타이핑 라이브러리를 사용하는 경우 명시 적으로이를 수행 할 필요가 없습니다.

관련 문제