원어민 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
'programing' 카테고리의 다른 글
Woocommerce 페이지당 내 계정 주문 목록 게시 맞춤 (0) | 2023.02.14 |
---|---|
spring-data-jpa와 spring-boot-starter-data-jpa의 차이점 (0) | 2023.02.14 |
각도 Ui-router 링크가 앱에서 벗어났지만 동일한 도메인에 있음 (0) | 2023.02.14 |
"jsdom" 테스트 환경의 사용을 검토하다 (0) | 2023.02.14 |
언어 WPML 숨기기 (0) | 2023.02.14 |