Open changtimwu opened 8 years ago
async syntax comparison
require("babel-polyfill");
import request from "request";
async function main() {
await pingmany();
}
async function pingmany() {
for (var i = 0; i < 10; i++) {
await delay(1000);
console.log("ping");
}
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
main();
async function main() {
await pingmany();
}
async function pingmany() {
for (var i = 0; i < 10; i++) {
await delay(1000);
console.log("ping");
}
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
main();
almost identical but why ts doesn't need polyfill?
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function caller() {
//ok
await delay();
}
//error!
await delay();
please study the advance type
to understand all variations.
https://www.typescriptlang.org/docs/handbook/advanced-types.html
define type with infinite set of values
type _quarter = "quarter" | "quarters" | "Q";
type _isoWeek = "isoWeek" | "isoWeeks" | "W";
type _date = "date" | "dates" | "D";
type StartOf = Base | _quarter | _isoWeek | _date;
startOf(unitOfTime: StartOf): Moment;
startOf( 'day') //ok
startOf('xday') // error
Traditional JS libs usually are used to have some
var BigNumber = require
var b1= new BigNumber(3) // it's a class, which is newable
var b2 = BigNumber.EUCLID // it also has static members
How to type this kind of lib inside a TS interface/class?
import BigNumber from 'bignumber.js'
interface fff {
//BN:BigNumber //wrong this means BN is an instance of BigNumber
BN:typeof BigNumber
}
function bfunc( b:fff){
var gg= new b.BN(3) //ok! it's a
var rr = b.BigNumber.EUCLID //ok! it's accessible
}