Obietnice są dostępne tylko w ES6
Jeśli docelową do ES6, kompilator maszynopis wykorzystuje inną bibliotekę bazowej dla typu podstawowego sprawdzenia przed rodzaje zawarte w specyfikacji języka. Upewnij się, że celujesz w ES6.
Promises na maszynie bez kierowania ES6
Jeśli chcesz otrzymać dostęp do definicji Konstruktorów jako metod określonych w specyfikacji es2015, które zostały wdrożone przez przeglądarek i NodeJS (poprzez silnik V8) przed funkcji językowych - jak funkcje strzałek , destrukturyzacja itd. - możesz to zrobić.
To, co chcesz zrobić, to skonfigurować TypeScript do celu es5, nie dołączać i domyślną bibliotekę i odwoływać się do domyślnej biblioteki.
Twój tsconfig może wyglądać tak:
{
"compilerOptions: {
"noLib": true,
"target": "ES5",
}
"files": [
"node_modules/typescript/lib/lib.es6.d.ts",
"app.ts",
]
}
Powyższe przykłady zakłada, że maszynopis jest instalowany bezpośrednio w projekcie. Jeśli nie, możesz zawsze skopiować z folderu instalacji maszynopisu i dołączyć go do projektu.
To rozwiązanie powinno dać ci typowania dla konstruktora Promise, a także wiele innych funkcji, takich jak array.includes() i kilka innych rzeczy. Ma to tę wadę, że nie dostaniesz błędów typu dla rzeczy, które nie są zaimplementowane w przeglądarkach, ale jeśli używasz Promise i tak prawdopodobnie wybierasz tylko nowoczesne przeglądarki lub używasz węzła, w którym kontrolujesz środowisko wykonawcze.
Jaki jest twój plik compilerOptions.target w tsconfig? – Paarth
@Paarth Celuję w es5 – Alon
Czy masz zainstalowane inne moduły, które definiują obietnicę, takie jak obietnica core-js lub es6? –