-
析构表达式竟然还可以加入...args多个参数
查看全部 -
针对数组的析构表达式
查看全部 -
一行代码取出对象中的各种值
查看全部 -
generator函数的yield控制函数体内方法的暂停和继续执行
查看全部 -
...args 可接收多个参数
查看全部 -
可选参数和默认参数要在必选参数后面
查看全部 -
ad的阿萨德
查看全部 -
面向对象的特性:类(class):同java
访问控制:public private protected
constructor(){ }//外部不能访问构造函数方法,在new的时候被调用而且只能被调用一次,这时实例化一个人的时候必须指定name的值,而且注意在声明参数的时候必须指定访问控制符(public private protected)
查看全部 -
注解
@Component({})
@Directive({})
查看全部 -
文件模块
每个ts文件就是一个文件模块.
各个模块通过export关键字选择其暴露的变量、方法、类信息供其他模块使用.
各个模块通过import关键字导入其他文件模块中暴露的元素便能使用.
A.ts
export var field1;
var field2;
export function function1 (){
}
function function2 (){
}
export class C1{
}
class C2{
}
B.ts
import {field1} from "./A"
import {function1} from "./A"
import {C1} from "/A"
export function mes (){
console.log(field1);
console.log(function1);
console.log(C1);
}
查看全部 -
面向对象的新特性
类
使用class关键字创建类.
类中有属性和方法,属性和方法可以被修饰符所修饰.
*类中定义的方法不会有function关键字且在方法名后也支持定义方法的返回值类型.
typescript提供了4种访问修饰符:public、protected、private、默认(public)
public:被public修饰的属性和方法在整个工程都能访问.
protected:被protected修饰的属性和方法在本类以及子类可以访问.
private:被private修饰的属性和方法只能在本类访问.
构造方法的方法名固定为constructor,在创建实例时自动调用.
使用extends关键字继承类(单继承),那么将会继承类中所有的属性和方法(父类private修饰的属性和方法无法在子类中使用)
若类需要被继承那么其构造方法必须是public或protected.
如果子类有构造方法,由于方法名一致,相当于方法的重写,因此子类的构造方法中必须调用父类的构造方法.
class Person {
private name: string;
private age: number;
public getName():string {
return this.name;
}
constructor(name) {
this.name = name;
}
}
var person = new Person(`Jack`);
class Employee extends Person {
private code: number;
constructor(code) {
super(`Jack`);
this.code = code;
}
}
泛型
typescript在数组类型中支持使用泛型.
接口
使用interface关键字定义接口,接口中的方法只有声明没有实现.
类通过implements关键字实现接口,将要实现接口中声明的所有方法.
interface Person{
name():string;
}
class Employee implements Person{
private str:string;
name(){
return this.str;
}
constructor(str) {
this.str = str;
}
}
var employee = new Employee(`zht`);
console.log(employee.name());
注解
@Component({})
@Directive({})
查看全部 -
循环新特性
JS中提供了forEach(function f)方法用于遍历数组中的元素.
typescript中额外的提供了for in以及for of两种遍历方法.
for in用于遍历数组中元素的索引
for of用于遍历数据中的元素,与forEach()的区别是支持break关键字跳出循环.
var array = [10,20,30] ;
// 10,20,30
array.forEach(value => { console.log(value) });
// 0,1,2
for (var index in array) {
console.log(index);
}
// 10,20,30
for (var value of array) {
console.log(value);
}
查看全部 -
箭头表达式
()=>{}
()表示方法参数列表
{}表示方法体
*当参数列表中只有一个参数时则可以省略小括号.
*当方法体中只有一行代码则可以省略花括号(如果是返回值则可以省略return关键字).
*箭头表达式一般用在需要function参数的API,如数组的forEach、map、filter等方法.
var array = [1,2,3,4,5];
//使用forEach方法
array.forEach(arg=>console.log(arg));
//使用filter方法
var newArray = array.filter(arg=>arg%2==0);
console.log(newArray);
forEach()方法用于遍历数组的每个元素并将元素传递给回调函数.
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(返回所有元素).
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素(返回表达式为true的元素).
查看全部 -
方法新特性
1.任意数量的方法参数
使用...符号声明任意数量的方法参数,参数将会是一个数组.
var count = function(...args){
args.forEach(function(arg){
console.log(arg);
})
}
count(1,2,3,4,5);
2.generator函数
可以控制函数的执行过程,手动执行、暂停、恢复.
在function关键字后使用星号来声明一个方法为generator方法.
var count = function*(){
console.log(`start`);
console.log(`...`);
yield;
console.log(`end`);
}
必须借助方法的返回值来调用方法(尽管无返回值).
var result = count();
result.next(); //调用方法
result.next(); //再执行方法
yield关键字:使CPU释放当前线程拥有的资源.
*每次执行next()方法程序将会执行到yield关键字中,以此类推.
在yield关键字后可以返回指定的值.
*调用next()方法后调用其value属性将会获取所在yield其返回的返回值.
var count = function*(){
console.log(`start`);
yield `haha`;
console.log(`end`);
}
var tem = count();
console.log(tem.next().value);//调用方法并获取yield返回值.
3.析构表达式
通过析构表达式可以将对象或数组中的元素解析成变量.
*析构对象使用花括号,析构数组使用大括号.
析构对象
function getPerson(){
return {
name:"jack",
age: 23
}
}
//使用JS源生方法获取对象中的属性
var person = getPerson();
var name = person.name;
var age = person.age;
//使用析构表达式获取对象中的属性
var {name,age} = getPerson();
//析构对象时,当变量名称与对象中的属性名不一致时则可以使用属性名加冒号指定.
var {name:username,age} = getPerson();
析构数组
var array = [1,2,3,4,5];
//使用析构表达式获取数组中的元素
var [num1,num2] = array;
*此时num1、num2变量的值分别是1和2
//使用空值代替
var [,,num1,num2] = array;
*此时num1、num2变量的值分别是3和4
//配合多值表达式使用
var [num1,num2,...others] = array;
*此时num1、num2变量的值分别是1和2,others变量是一个数组,其值为3,4,5
//将析构表达式作为方法的参数
var array = [1,2,3,4,5];
function doSomething([num1,num2,...others]){
}
doSomethind(array);
查看全部 -
any可以赋值为任何类型 字符串数字都可以;
void是用来声明方法的,没有返回值
查看全部
举报