// TypeScript JavaScript
//1.类型 2.面向对象
//输出语句
//变量
//声名变量 字母数字下划线 字母下划线 驼峰
var PersonName:string=”李逍遥”;
document.write(PersonName+”110”);
PersonName=”王小虎”;
const tmp:number= 11.1;
document.write(PersonName);
let a:number[]=[1,2,3,4,5,6,7,8,9,10];
let names:string[]=[“王小虎”,”林月如”];
document.write(这个数字是${a[2]}。
);
//联合类型
let num:number|string =0;
num =‘0’;
//枚举类型
//定义属于自己的类型
enum Color{
red,
blue,
green
}
enum State{
idle,
run,
death,
attack
}
let color:number=Color.green;//
let state:number=State.idle;//
//注释
//类型验证
let x=10;
document.write(typeof (x));
//类型别名
type NewNumber =number;
let nums:NewNumber=3;
document.write(typeof (nums))
//运算符
//+ - * / %
let num1=10;
num1 =num1+1;
num1++;
document.write(num1+”“);
//比价运算符
//> < == != >= <= ===
let num2 =5;
let res:boolean =num2>3;
document.write(res+” “);
// let num3=”5”;
// let flag:boolean= num2 != num3;
document.write(” “);
//逻辑运算符
//&& || !
let num5=5;
res=num5>3&&num5<10;
document.write(res+”“)
document.write(!res+”“);
let states:State =State.idle;
switch (states){
case State.idle:
document.write(“站立”);
break;
case State.attack:
document.write(“攻击”);
break;
case State.run:
document.write(“跑步”);
break;
default:
document.write(“其他状态”);
}
//循环控制语句
//0+1+2
let i=0;
while (i<5){
document.write(“hello”);
i++;
}
do {
document.write(num+”“);
}while (i<0);
let xs=0;
for (let i = 0; i <= 100; i++) {
xs+=i;
}
document.write(xs+”“);
let names1:string[]=[“李逍遥”,”赵灵儿”,”林月如”];
let xx:number=0;
while (xx<3){
document.write(names1[xx]);
xx++;
}
for (let j = 0; j <3; j++) {
document.write(names1[j]);
}
for (let tmpName in names1) {
document.write(tmpName)
}
for (let index in names1) {
document.write(index)
}
/函数
let arr :string[]=[‘a’,’b’,’c’,’d’,’e’];
let char:string=’b’;
for (let index in arr) {
if (char==arr[index]){
document.write(index);
break;
}
}
//流水线 输入------》输出
// 参数 返回知
function func(char:string) {
let arr:string[]=[‘a’,’b’,’c’,’d’,’e’];
for (let j = 0; j < arr.length; j++) {
if(char==arr[j]){
document.write(“当前是第”+j+”个字符”);
}
}
}
func(‘a’);
func(‘b’);
func(‘e’);
function add(num1:number,num2:number): number {
return num1+num2;
}
let add2=function () {
}
let add3=(num1,num2):void=>{
}
document.write(add(3,5)+’‘);
//面向过程 ------》 面向对象
function say(name:string,age:number,score:number) {
document.write(大家好,我叫${name},今年${age}岁
)
}
let aName:string=”令狐冲”;
let aAge:number=26;
let aScore:number=80;
say(aName,aAge,aScore);
//面向对象
class Person {
name:string=”xiaobei”;
age:number=12;
// score:number=0;
say(){
document.write(this.name)
}
}
//实例化对象
let lhc=new Person();
lhc.name=”令狐冲”;
lhc.age=26;
lhc.say();
//继承
class Student extends Person{
say() {
super.say();
document.write("我是学生!"+this.name);
}
}
let sa=new Student(“aa”,26);
sa.name=”aaa”;
sa.age=12;
class Teacher extends Person{
}
//接口
interface Iwolf{
attack();
}
class wolfMan extends Person implements Iwolf{
attack() {
document.write(“攻击”);
}
eat(){
}
}
class Person1{
_hp:number=100;
//取值
get hp():number{
return this._hp;
}
//赋值
set hp(value:number){
this._hp=value;
if(this._hp<=0){
this._hp=0;
}
}
}
let ap=new Person1;
ap.hp=-180;
document.write(ap.hp+”“);
//命名空间
namespace aa{
export class Person{
name: string="";
}
}
let person=new aa.Person();
//泛型
/
function add(num:any):any{
if(typeof(num)==”number”){
num++;
return num;
}
return num;
}
document.write(add(“3”)+”“);/
//限定输入输出类型
function add[HTML_REMOVED](num:T):T{
if(typeof(num)==”number”){
num++;
return num;
}
return num;
}
document.write(add(4)+”“);
//元组
let hero:[string,number]=[“超人”,26];
hero[1]=56;
hero[0]=”xiaowang”;
// document.write(hero[0]);
//数组
let arr:number[]=[1,2,3];
document.write(arr.length+”“);
//数组后面添加
arr.push(4);
//数组前面添加
arr.unshift(0);
arr.pop();
arr.shift();
arr.splice(0,1);
//合并数组
arr.concat([1,2,3]);
let index=arr.indexOf(1);
//排序
arr.sort();
arr.reverse();
//字典
let dic:{[key:string]:string}={
“name”:”王小虎”,
“name2”:”李逍遥”
};
dic[“name3”]=”令狐冲”;
document.write(dic[“name3”]);
//回调
//函数传参
function func(value:Function){
value(“nana”);
}
function test(name:string){
document.write(“test”);
}
func(test);
func(function(name:string){
document.write(“test2”);
});
func((name:string)=>{
document.write(“test3”);
});
//访问权限修饰符 public 公开的 protected 受保护的 private私有的
class Person{
private _name:string=”“;
set name(value:string){
this._name=value;
}
get name():string{
return this._name;
}
say(){
}
}
class Student extends Person{
constructor(){
super();
this.name
}
}
let a=new Person()
//单例模式
class SoundManager{
private static instance:SoundManager;
private constructor(){
}
static Instance(){
//懒加载
if(!SoundManager.instance){
SoundManager.instance=new SoundManager();
}
return SoundManager.Instance;
}
}
SoundManager.Instance();
//观察者模式
interface IObserver{
nameChanged(newName:string):void;
}
class Person{
private _name:string=”“;
//所有的观察者
observers:Array[HTML_REMOVED] =new Array[HTML_REMOVED]();
set name(value){
this._name=value;
//发生变化
//给数组发消息
for (let observe of this.observers) {
observe.nameChanged(this._name);
}
}
get name(){
return this._name;
}
}
class Test implements IObserver{
nameChanged(newName:string) {
document.write(监听到变化,名字变为${newName}
);
}
}
let person=new Person();
let test=new Test();
let test2=new Test();
let test3=new Test();
person.observers.push(test);
person.observers.push(test2);
person.observers.push(test3);
person.name=”月如”;
//工厂模式
enum CarType{
Bmw,
Audi,
Benz
}
class Car{
name:String=”“;
static Create(carType:CarType):Car{
let car:Car;
switch (carType) {
case CarType.Audi:
car=new Audi();
break;
case CarType.Benz:
car=new Benz();
break;
case CarType.Bmw:
car=new Bmw();
break;
}
return car;
}
}
class Bmw extends Car{
}
class Audi extends Car{
}
class Benz extends Car{
}
let benz = Car.Create(CarType.Benz);
//链表
class node{
next:node;
value:number;
}
class Person {
name:string;
next:Person;
constructor(name) {
this.name=name;
}
}
let person1= new Person(‘李逍遥’);
let person2= new Person(“王小虎”);
let person3= new Person(‘赵灵儿’);
person1.next=person2;
person2.next=person3;
person1.next=person1.next.next;
while (person1.next){
document.write(person1.name);
person1=person1.next;
}