programing

원어민 ES6 약속에서의 타이프스크립트 사용방법

bestcode 2023. 2. 14. 20:22
반응형

원어민 ES6 약속에서의 타이프스크립트 사용방법

저는 Typescript의 초보자인데, Typescript에서 ES6 약속을 사용할 수 있는지, 그리고 그 약속을 실행하기 위해서는 어떻게 해야 하는지 궁금합니다.노드 0.11.14를 실행하고 있으며 컴파일 중에 "Cannot find name 'Promise" (이름 'Promise'를 찾을 수 없습니다)라는 오류가 나타납니다.

현재 lib.d.ts에는 정의된 약속이 없습니다.따라서 추가 정의 파일이 필요하기 때문에 컴파일 오류가 발생합니다.

예를 들어 (@elclanrs가 말한 것처럼) Definitionally의 정의 파일과 함께 es6-promise 패키지를 사용할 수 있습니다.유형: es6-promise 정의

그런 다음 다음과 같이 사용할 수 있습니다.

var p = new Promise<string>((resolve, reject) => { 
    resolve('a string'); 
});

편집은 ES6(TypeScript 컴파일러 사용)를 대상으로 할 때 정의 없이 사용할 수 있습니다.Promise는 여전히 실행 시(구 브라우저에서는 작동하지 않습니다)에 필요합니다.다음 항목을 추가/편집하십시오.tsconfig.json:

"compilerOptions": {
    "target": "ES6"
}

편집 2 TypeScript 2.0이 출시되면 상황이 조금 바뀌지만(위의 내용은 그대로 작동하지만) 다음과 같이 정의 파일을 npm에서 직접 설치할 수 있습니다.

npm install --save @types/es6-promise- 소스

edit 3 유형 사용에 대한 자세한 정보를 사용하여 답변을 업데이트합니다.

작성하다package.json만으로 정리하다{ }내용물(패키지가 없는 경우)로 지정합니다.이미 json은.불러npm install --save @types/es6-promise그리고.tsc --init. 첫 번째 npm install 명령어를 실행하면,package.json의존관계로서 es6-module을 포함시킵니다.tsc --init 는, 다음의 명령어를 작성합니다.tsconfig.json파일링 해주세요.

이제 타이프스크립트 파일에서 약속을 사용할 수 있습니다.var x: Promise<any>;실행하다tsc -p .프로젝트를 컴파일합니다.오류가 없어야 합니다.

대안 #1

를 사용합니다.target그리고.lib컴파일 대상 컴파일러 옵션es5를 인스톨 할 필요는 없습니다.es6-shim. (TypeScript로 테스트 완료)2.1.4). lib 섹션에서 다음 중 하나를 사용합니다.es2016또는es2015.promise.

// tsconfig.json
{
    "compilerOptions": {
        "target": "es5",
        "lib": [
            "es2015.promise",
            "dom"
        ]
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

대안 #2

NPM을 사용하여 설치하다es6-shim형식 조직으로부터.

npm install @types/es6-shim --save-dev

대안 #3

TypeScript 2.0 이전 버전에서는 타이핑을 사용하여es6-shim확실히 글로벌하게입력.

npm install typings --global --save-dev
typings install dt~es6-shim --global --save-dev

typings옵션 사용npm설치하다typings를 글로벌하게 사용한 후typings심을 장착합니다.dt~prefix는 Definally에서 심을 다운로드하는 것을 의미합니다.타이핑.--global옵션은 프로젝트 전체에서 심 유형을 사용할 수 있음을 의미합니다.

「 」를 참조해 주세요.

https://github.com/Microsoft/TypeScript/issues/7788 - 이름 '약속'을 찾을 수 없고 이름 '약속'을 찾을 수 없습니다.

2.에서는 TypeScript 2.0에 할 수 .tsconfig.json

"compilerOptions": {
    "lib": ["es5", "es2015.promise"]
}

여기에는 타깃을 ES6로 설정하지 않고 TypeScript에 포함된 약속 선언이 포함됩니다.

node.js 0.12 이상 / typescript 1.4 이상을 사용하는 경우 다음과 같은 컴파일러 옵션을 추가합니다.

tsc a.ts --target es6 --module commonjs

상세정보 : https://github.com/Microsoft/TypeScript/wiki/Compiler-Options

「 」를 사용하고 tsconfig.json 이렇게요.

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6"
    }
}

상세정보 : https://github.com/Microsoft/TypeScript/wiki/tsconfig.json

이것은 가장 최근의 방법입니다.위의 답변은 오래된 것입니다.

typings install --global es6-promise

Visual Studio 2015 + Node.js 툴 1.2에서 네이티브 ES6 Promise를 Typescript와 함께 사용

ES6 Promise가 네이티브이므로 npm 설치가 필요하지 않습니다.

Node.js project -> Properties -> Typescript Build 탭 ECMAScript 버전 = ECMAScript6

import http = require('http');
import fs = require('fs');

function findFolderAsync(directory : string): Promise<string> {

    let p = new Promise<string>(function (resolve, reject) {

        fs.stat(directory, function (err, stats) {

            //Check if error defined and the error code is "not exists"
            if (err && err.code === "ENOENT") {
                reject("Directory does not exist");
            }
            else {
                resolve("Directory exists");
            }
        });

    });
    return p;
}

findFolderAsync("myFolder").then(

    function (msg : string) {
        console.log("Promise resolved as " + msg); 
    },
    function (msg : string) {
        console.log("Promise rejected as " + msg); 
    }
);

A를 사용하는 . 사용하는 경우"target": "es5" TypeScript 이 2.인 경우:

typings install es6-promise --save --global --source dt

B를 사용하는 . 사용하는 경우"target": "es5" TypeScript 2.0 TypeScript 버전 2.0 이후:

"compilerOptions": {
    "lib": ["es5", "es2015.promise"]
}

C를 사용하는 . 사용하는 경우"target": "es6"도 안

는 신용을 떨어뜨려야 .@types/core-js할 수 ."target": "es5"tsconfig.tsconfig로 합니다.

"@types/core-js": "0.9.36",

tsconfig.json의 typeorm 문제를 입력합니다.속성을 추가합니다.strictProperty초기화": false

언급URL : https://stackoverflow.com/questions/27573365/how-to-use-typescript-with-native-es6-promises

반응형