-
三大优势 1遵循es6规范,未来的主流 2强大的ide支持,包括类型检查,代码提示,重构 3angular2.0查看全部
-
a?:string--------------可选参数
查看全部 -
类型定义文件(*.d.ts),用来帮助开发者在Typescript中使用已有的javascript的工具包。如JQuery
查看全部 -
注解为程序的元素(类、方法、变量)加上更直观更明了的说明,这些说明信息与程序的业务逻辑无关,而是供指定的工具或者框架使用的。如angular2框架中的@component({
Selector:”app-root”,
templateUrl:”./app.component,html”,
styleUrls:[“./app.component.css”]
})
告诉框架如何处理程序的元素。
查看全部 -
一个文件就是一个模块。模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用。哪些单元仅在模块内部使用。如果要暴露出去的资源,需要加关键字export,在别的地方引用需要用import引进来
查看全部 -
接口
用来建立某种代码约定,使得其它开发者在调用某个方法或创建新的类时必须遵循接口所定义的代码约定。在javascript中没有接口这个概念。
查看全部 -
//在typescript中,提供两个关键字支撑接口这个特性,interface(声明结构)和implemen(用于声明某个类实现了某个接口)
//结构声明属性
interface IPerson {
name: string,
age:number
}
class Person {
//作为一个方法的参数的类型声明
constructor(public config: IPerson) {
}
}
//调用这个方法时,会检查传入的参数是否满足接口声明的那些属性,下面例子传入的参数必须是一个对象,
//而且对象的属性个数和类型必须满足接口内定义的属性。
var p1 = new Person({
name: "zhangsan",
age:19
})
//接口声明方法
interface Animal {
eat();
}
//当一个类实现一个接口时,它必须实现接口中声明的方法。
class Sheep implements Animal {
eat() {
console.log("eat grass");
}
}
class Tiger implements Animal {
eat() {
console.log("eat meat");
}
}
查看全部 -
//类的定义
class Person {
//类的访问控制符(public、 private、protect.)是控制类的属性和方法是否可以在类的外部被访问到。
//默认的是public.public的属性和方法在类的内部和外部都可以被访问到。
//private 属性和方法只能在类的内部被访问
//protect属性和方法可以在类的内部和类的子类中被访问到,类的外部也不能被访问到。
//类的构造函数是类的一个特殊的方法,这个方法只有类被实例化的时候才被调用,而且只调用一次。外部没法访问这个构造函数。
//只有类被new实例化时被调用。实例化几次被调用几次。
// constructor() {
// console.log("haha");
// }
//构造函数的作用,比如实例化一个人时必须指定名字。实例化时必须指定名字,否则报错
//name; 在这里默认是public,但是在构造函数中使用这个变量要明确声明访问控制符的。
constructor(public name: string) {//声明了一个name属性,eat()可以调用。
console.log("haha");
this.name = name;
}
eat() {
//console.log(this.name);
console.log("im eating");
}
}
//类可以理解成一个模型,实例化是做成真正的产品,类的实例化是通过new关键字完成的.同样的一个类可以
//new出多个实例,实例拥有相同的属性和方法,但是状态不同。
var p1 = new Person("batman");//实例化一个人时必须指定名字。
//p1.eat();
//p1.name = "batman";
var p2 = new Person("superman");//实例化一个人时必须指定名字。
//p2.eat();
//p2.name = "superman";
//类的继承,两个关键字extends和super,super用来调用父类的构造函数或方法。
class Exployee extends Person {
//Exployee类继承了Person类的所有的属性和方法
//子类也可以指定新的属性和方法
code: string;
work() {
//console.log("im working");
//调用父类的其他方法
super.eat();
this.doWork();
}
private doWork() {
console.log("im woring");
}
//super可以用来调用父类的构造函数或方法
constructor(name: string, code: string) {
super(name);//构造员工类的时候,必须要调用父类的构造函数,否则报错。
console.log("xixi");
this.code = code;
}
}
//Exployee类继承了Person类的所有的属性和方法
var e1 = new Exployee("zhy","1");
// e1.eat();
e1.work();
//泛型,参数化的类型,一般用来限制集合的内容。指定数组只能放某一类型的内容
//这里规定这个数组的泛型是Person,只能放Person的内容
var array1: Array<Person> = [];
array1[0] = new Person("zhangsan");
array1[1] = new Exployee("lisi", "2");//继承自Person
array1[2] = 2;//报错
查看全部 -
//类的定义
class Person {
//类的访问控制符(public、 private、protect.)是控制类的属性和方法是否可以在类的外部被访问到。
//默认的是public.public的属性和方法在类的内部和外部都可以被访问到。
//private 属性和方法只能在类的内部被访问
//protect属性和方法可以在类的内部和类的子类中被访问到,类的外部也不能被访问到。
//类的构造函数是类的一个特殊的方法,这个方法只有类被实例化的时候才被调用,而且只调用一次。外部没法访问这个构造函数。
//只有类被new实例化时被调用。实例化几次被调用几次。
// constructor() {
// console.log("haha");
// }
//构造函数的作用,比如实例化一个人时必须指定名字。实例化时必须指定名字,否则报错
//name; 在这里默认是public,但是在构造函数中使用这个变量要明确声明访问控制符的。
constructor(public name: string) {//声明了一个name属性,eat()可以调用。
console.log("haha");
this.name = name;
}
eat() {
//console.log(this.name);
console.log("im eating");
}
}
//类可以理解成一个模型,实例化是做成真正的产品,类的实例化是通过new关键字完成的.同样的一个类可以
//new出多个实例,实例拥有相同的属性和方法,但是状态不同。
var p1 = new Person("batman");//实例化一个人时必须指定名字。
//p1.eat();
//p1.name = "batman";
var p2 = new Person("superman");//实例化一个人时必须指定名字。
//p2.eat();
//p2.name = "superman";
//类的继承,两个关键字extends和super,super用来调用父类的构造函数或方法。
class Exployee extends Person {
//Exployee类继承了Person类的所有的属性和方法
//子类也可以指定新的属性和方法
code: string;
work() {
//console.log("im working");
//调用父类的其他方法
super.eat();
this.doWork();
}
private doWork() {
console.log("im woring");
}
//super可以用来调用父类的构造函数或方法
constructor(name: string, code: string) {
super(name);//构造员工类的时候,必须要调用父类的构造函数,否则报错。
console.log("xixi");
this.code = code;
}
}
//Exployee类继承了Person类的所有的属性和方法
var e1 = new Exployee("zhy","1");
// e1.eat();
e1.work();
查看全部 -
var array1 = [1, 2, 3, 4];
array1.des = "hello world!";//在编辑器中会报错
//forEach循环会把属性des忽略掉;不能break
array1.forEach(value => console.log(value));
//for in 循环的是数组元素键值对的键的名字
for (var n in array1) {
console.log(array1[n]);
}
//for of循坏的是数组元素的值,会把自定义的des属性忽略,这个循坏是可以被打断的
for (var m of array1) {
if (m > 2) break;
console.log(m);
}
//for of 是可以用在任何对象上的,比如map,集合,数组,setset,也可以用在字符串上。
for (var p of "my name is zhy") {
console.log(p);
}
查看全部 -
var sum = (arg1) => {
console.log(arg1);
};
var array1 = [1, 2, 3, 5, 6];
console.log(array1.filter(value => value % 2 == 0));
function getStock(name: string) {
this.name = name;
setInterval(()=>{
console.log("this name is:"+ this.name);
},1000)
}
var stock = getStock("IBM");
查看全部 -
var array1 = [1, 2, 3, 4, 5];
function doSomething([number1, number2, ...tts]) {
console.log(number1);
console.log(number2);
console.log(tts);
}
doSomething(array1);
查看全部 -
Destructing析构表达式。通过表达式把对象或者数组分解成任意数量的变量。
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, 5];
var [number1, , ,...tts] = array1;
console.log(number1);
console.log(tts);
查看全部 -
参数新特性
1、参数类型:在参数后面使用冒号来指定参数类型。
2、默认参数:在参数声明后面使用等号给参数赋值。给方法里面的参数赋值时,如果方法有多个参数,赋值参数要放在后面。
3、可选参数: 在方法的参数声明后面用问号来标明此参数为可选参数。可选参数必须声明在必选参数的后面。
查看全部 -
http://www.imooc.com/sale/1?mc_marking=8dc912cd56db4f1a2a37a9d5862af322&mc_channel=banner1
查看全部
举报