共计 3415 个字符,预计需要花费 9 分钟才能阅读完成。
class Site{name():void{console.log('test')
}
}
var obj = new Site()
console.log(obj.name())
/**
* 如果某个属性的值是计算出来的
* 那么它前面一位的成员必须要初始化值
* **/
const getValue=()=>{return 1}
enum objlist {a=getValue(),
b=2,
c,
d
}
console.log(objlist)
/**
* ts 变量申明
* var [varname]:[vartype]=[varvalue];
* var [varname]:[vartype];
* var [varname]=[varvalue];
* var [varname];
* TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译谬误
* **/
// var num:number = "hello" // 这个代码会编译谬误
/**
* 类型断言 type assertion
* 用来手动指定一个值的类型,即容许变量从一种类型更改为另一种类型
* <type>value
* 或者 value as type
* 类型也不能随便更改,须要满足映射关系
* **/
var str:any = "string1";
var str2:number = str as any;
console.log(str2)
/**
* 类型推断
* 当类型没有给出时,* TypeScript 编译器利用类型推断来推断类型。* 如果因为不足申明而不能推断出类型,* 那么它的类型被视作默认的动静 any 类型
* **/
var num = 2; // 类型推断为 number
console.log("num 变量的值为"+num);
// num = "12"; // 编译谬误
console.log(num);
/**
* 变量作用域
* 全局作用域、类作用域(class)、部分作用域(代码块,比方办法)* **/
var global_val = 'global'; // 全局作用域
class Numbers { // 类
num_val=1; // 类作用局,new 进去的实例可拜访,
static static_val =2;// 类作用局,动态变量, 类可拜访该动态变量则可拜访,store_val():void{// 类作用局
var local_val = 3 // 部分作用域,仅 new 出实体后以实体进行拜访
}
}
var obj3= new Numbers()
console.log("全局变量",global_val);
console.log("类作用域,动态变量 static_val",Numbers.static_val);
console.log("类作用域,num_val、store_val() 不可拜访");
console.log("类作用域,num_val");
console.log("类作用局",obj3.num_val);
console.log("类作用局",obj3.store_val());
/**
* 残余参数
* 不晓得要向函数传入多少个参数,这时候咱们就能够应用残余参数来定义。* 残余参数语法容许咱们将一个不确定数量的参数作为一个数组传入。* function buildName(...restOfName: string[])
* **/
/**
* 递归函数
* **/
function factorial(number) {if (number <= 0) { // 进行执行
return 1;
} else {return (number * factorial(number - 1)); // 调用本身
}
};
console.log(factorial(6));
/**
* lambda 箭头函数
* **/
//([param1, parma2,…paramn] )=> {
// 代码块
//}
/**
* 元组:既数组中元素类型能够不一样
* **/
/**
* 联结类型
* var valname : type1|type2...
* 一个变量能够同时为多种类型
* **/
/**
* ts 接口
* 一系列形象办法的申明,是一些办法特色的汇合
* 这些办法都应该是形象的,须要由具体的类去实现
* 而后第三方就能够通过这组形象办法调用,让具体的类执行具体的办法
* 相似于 gql 的接口
* 不是传统意义的 api
* **/
/**
* 变量 customer 定义为 IPerson 类型,则 custom 能够应用 IPerson 中定义的任意变量
* 同时 customer 还能够定义 IPerson 定义的变量以外的其余变量名
* **/
interface IPerson {
firstName:string,
lastName:string,
sayHi: ()=>any}
var customer:IPerson = {
firstName:"Tom",
lastName:"Hanks",
sayHi: ():number =>{return 1}
}
/**
* 联结类型和接口
* commandline 能够是 string 类型的数组,能够是独自的 string,能够是一个办法(返回值为 string)* interface RunOptions {
program:string;
commandline:string[]|string|(()=>string);
}
* **/
/**
* 接口和数组
* 接口中咱们能够将数组的索引值和元素设置为不同类型,索引值能够是数字或字符串
* **/
interface namelist {[index:number]:string
}
/**
* 接口和继承
* 接口能够通过其余接口来扩大本人
* Child_interface_name extends super_interface_name
* 容许多接口继承, 各个接口应用逗号 ',' 分隔。* Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name
* 关键字为:extends
* **/
interface Person {age:number}
interface Musician extends Person {instrument:string}
// var drummer:Musician={
// age:12,
// instrument:"s"
// };
// 应用类型断言,否则须要设定初始值
var drummer = <Musician>{};
drummer.age = 27
drummer.instrument = "Drums"
console.log("年龄:"+drummer.age)
console.log("喜爱的乐器:"+drummer.instrument)
/**
* 类 class
* 蕴含:字段,构造函数,办法
* 构造函数与办法有什么区别??* 构造函数是否相似于函数初始化?* 类能够继承
* 子类除了不能继承父类的公有成员 (办法和属性) 和构造函数,其余的都能够继承
* 访问控制修饰符:* public(默认): 私有,能够在任何中央被拜访
* protected: 受爱护,能够被其本身以及其子类和父类拜访
* private: 公有,只能被其定义所在的类拜访
* **/
class Car {
// 字段
protected s1='sd'
engine:string;
// // 构造函数
constructor(engine:string) {this.engine = engine}
// 办法
disp(a):void {console.log("发动机为 :"+this.engine)
console.log(a)
}
}
var cars= new Car("1");
// console.log(Car.s1)
/**
* 类继承
* **/
class Shape {
Area:number
constructor(a:number) {this.Area = a}
}
class Circle extends Shape {disp():void {console.log("圆的面积:"+this.Area)
}
}
var obj5 = new Circle(1);
obj5.disp()
/**
* 命名空间:namespace 关键字
* 定义:namespace SomeNameSpaceName
* 应用:SomeNameSpaceName.SomeClassName;
* 命名空间可嵌套
* **/
namespace SomeNameSpaceName {export interface ISomeInterfaceName {}
export class SomeClassName {}}
正文完