-
多行字符串用【`】,1左边那个键。
查看全部 -
安装本地的一个npm
查看全部 -
类型定义文件(*.d.ts)
类型定义文件用来帮助开发者在TypeScript中
使用已有的JavaScript的工具包。
如:JQuery
//类型定义文件从哪来
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jquery/index.d.ts
https://github.com/typings/typings
查看全部 -
注解(annotation)
注解为程序的元素(类、方法、变量)加上更直观更明了的说明,
这些说明信息与程序的业务逻辑无关,而是供指定的工具或框架使用的。
查看全部 -
模块(Module)
模块可以帮助开发者将代码分割为可重用的单元。
开发者可以自己决定将模块中的哪些资源(类、方法、变量)暴露出来
供外部使用,哪些资源只在模块内使用。
一个文件就是一个模块。
export 和 import控制模块暴露的资源。
一个模块既可以暴露资源,也可以引用资源。
// a.ts
export var prop1;
var prop2;
export function func1(){
}
function func2(){
}
export class Clazz1{
}
class Clazz2{
}
// b.ts
import {prop1, func1, Clazz1} from "./a";
console.log(prop1);
func1();
new Clazz1();
查看全部 -
接口
用来建立某种代码约定,使得其他开发者在调用某个方法或
创建新的类时必须遵循接口所定义的代码约定。
interface关键字
// 类
interface IPerson{
name:string;
age:number;
}
class Person{
constructor(public config:IPerson){
}
}
var p1 = new Person({
name:"zhangsan",
age:18
});
implements 关键字
//方法
interface Animal(){
ear();
}
class Sheep implements Animal{
eat(){
console.log("i eat grass");
}
}
class Tiger implements Animal{
eat(){
console.log("i eat meat");
}
}
查看全部 -
泛型
参数化的类型,一般用来限制集合的内容
查看全部 -
类
类是TypeScript的核心,使用TypeScript开发时,大部分代码都是写在类里面的。
构造方法
constructor()
//在构造函数申明属性
constructor(public name:string){};
类的继承:extends
子类在使用构造函数需要调用父类的构造函数。
super关键字
(1)调用父类构造方法
(2)调用父类其他方法
查看全部 -
forEach(),for in 和 for of
var myArray =[1, 2, 3 ,4];
myArray.desc = "four number";
// 不能打断
// 不能打印desc(属性)
myArray.forEach(value => console.log(value));
// 同时把desc和数组打印出来
for(var n in myArray){
console.log(n);
// console.log(myArray[n]);
}
// 仅打印数组
// 可以打断
for(var n of myArray){
console.log(n);
// console.log(myArray[n]);
}
查看全部 -
箭头表达式
用来声明匿名函数,消除传统匿名函数的this指针问题
// es6写法
var sum = {arg1, arg2} => arg1 + arg2;
//es5写法
var sum = function(arg1, arg2){
return arg1 + arg2;
};
// 无参数
var sum = () =>{
}
// 一个参数
var sum = arg1 =>{
console.log(arg1);
}
//没有参数或者只有一个参数不需要用{}
// 例子
var myArray = [1, 2, 3, 4 ,5];
console.log(myArray.filter(value => value % 2 == 0))
// 等同于
console.log(myArray.filter(function(value){
return value % 2 == 0;
}))
// 优势
// es5
function getStock(name:string){
this.name = name;
setInterval(function(){
console.log("name is " + this.name);
},1000);
}
var stock = new getStock("IBM");
// 实际上name没有值,this关键字的问题
// es6
function getStock2(name:string){
this.name = name;
setInterval(() =>{
console.log("name is " + this.name);
},1000);
}
var stock = new getStock2("IBM");
查看全部 -
destructuring析构表达式
通过表达式将对象或数组拆解成任意数量的变量
function getStock(){
return {
code:"IBM",
price:100
}
}
// es5的写法
var stock = getStock();
var code = stock.code;
var price = stock.price;
console.log(code);
console.log(price);
//es6的写法
var{code,price} = getStock();
console.log(code);
console.log(price);
//或者
var{code:codex, price} = getStock();
console.log(codex);
console.log(price);
// 例子
function getStock(){
return {
code:"IBM",
price:{
price1:200,
price2:400
}
}
}
var {code:codex, price:{price2}} = getStock();
console.log(codex);
console.log(price2);
//例子
var array1 = [1, 2, 3, 4];
var [number1, number2] = array1;
console.log(number1);
console.log(number2);
// 1 2
var [, , number3, number4] = array1;
console.log(number3);
console.log(number4);
// 3 4
var [number1, number2, ...others] = array1;
console.log(others);
// 3 4
//例子
var array1 = [1, 2, 3, 4];
function doSomething([number1, number2, ...others]){
console.log(number1);
console.log(number2);
console.log(others);
}
// 1 2 , 3 4
查看全部 -
generator函数
控制函数的执行过程,手工暂停和恢复代码执行
function* doSomething(){
console.log("start");
yield;
console.log("finish");
}
var fun1 = doSomething();
// start
fun1.next();
// finish
fun1.next();
//例子
function* getStockPrice(stock){
while(true){
yield
Math.random() * 100;
}
}
var priceGenerator = getStockPrice("IBM");
var limitPrice = 15;
var price = 100;
while(price > limitPrice){
price = priceGenerator.next().value;
console.log(`the generator return ${price}`);
}
console.log(`buying at ${price}`);
查看全部 -
Rest and Spread操作符:
用来声明任意数量的函数的参数
function fun1(...args){
args.forEach(function (arg){
console.log(arg);
})
}
//js会报错
function fun2(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
var args=[1,2];
fun2(...args);
var args=[7,8,9,10,11];
fun2(...arg2);
查看全部 -
可选参数:
在方法的参数声明后面用问号来标明此参数为可选参数
function test(a:string , b?:string, c:string="jojo"){}
test("xxx");
将xxx赋值给a
可选参数不传则为undefined,不要调用。
可选参数不要声明在必选参数后面,和默认参数相同。
查看全部 -
参数默认值
在参数声明后面用等号来指定参数的默认值
function test(a:string, b:string, c:string){
}
test("xxx","yyy","zzz");
function test(a:string, b:string, c:string="jojo"){
}
test("xxx","yyy");
函数里的参数默认值最好声明在最右边,这个可以参考其他语言的做法
查看全部
举报