typescript

let a : number = 10
let b : boolean = false
let c : string = 'zzh'
let d : number[] = [1,2,3]
let e : Array<string> = ['zz','aa']
let f : [number, string, boolean] = [1,'zz',false]

function add (a:number,b:number) { 
      return a + b
}
var result = add(10,20)

function add1 (a : any):number { //可以传入任意类型的值, 返回的结果必须是number类型
      return a + b
}
var result1 = add1(10)

// 枚举
enum Gender { man , women}
let gender:Gender = Gender.man

let g : string | number
g = 10
g = 'zz'


function get(url:string, data:object, success:Function) :boolean {
      return false
}



interface AjaxConfig {
      readonly url: string, //readonly 相当于 const
      type: string,
      async?:boolean  // ?可以写boolean值 或者 不写
      [propName: string] :any  //字符串索引签名(可以多写不报错)
}

function ajax(options:AjaxConfig) {           
}

ajax({
      url:'a',
      type:'zz',
      success(){},
      abc(){}
} as AjaxConfig) // 忽略不检查



let h : ReadonlyArray<number> = [1,2,3]  //只读数组



function zz():void { //void 代表没有返回值

}
var res = zz()




function aa():number { 
      return 11
}
var res1 = aa()


function bb(name:string):string {  //传入参数要string类型,返回值也要string类型
      return 'aa'
}
var res2 = bb('1')


let say = function (a:number, b?:number) {//b可传可不传
      if(b){
            return a + b
      }else{
            return a 
      }
}
say(1,2)


let say1 = function (a:number, b :number = 0 ) {//b可传可不传
            return a + b
}
say1(1,2)



let say2 = function (...arys:number[]) {
      return arys.reduce((a,b) => {
            return a +b
      })
}
var res3 = say2(1,2,3,4,5,6)
console.log(res3)




//

// function Person(){
//       this.sayHi =function (){

//       }
// }

// let p1 = new Person()
class Person {
      static img : string = 'zzz' //直接把属性挂在了类上面,new 出来的对象获取不到  , 静态属性static
      readonly name : string  //只读      
      constructor(name : string){
            this.name = name
      }  
      sayHi(){
            console.log('my name is wang duo yu')
      }   
}
let p1 = new Person('wang duo yu')
console.log(p1)
console.log(p1.sayHi())
console.log(Person.img)


// 类继承
class Dog {
      wang(){
            console.log('wang wang wang   ')
      }
}

class Jinmao  extends Dog { //从 Dog中继承 
      hh (){
            console.log('jmjmjm')
      }
}

let J1 = new Jinmao()
J1.hh()
J1.wang()

class Bog {
      private name : string = 'wangduoyu' //私有的private    public公有的
      setName( val:string ){
             this.name = val
      }
      say1(){
            console.table(this.name + '-----wdy') 
      }
}
let B1 = new Bog()
B1.setName('WANGDUOYUDE BABA')
B1.say1()


class Mao {
      name : string = 'xiaomao'
      private _age  : number = 9

      get Age () :number {    // get  存取器
            return this._age
      }

      set Age ( val : number ) { // 存取器
            if( val < 1 ) return
            if( val > 30 ) return
            this._age = val
            
      }

}
let M1 = new Mao()
console.log(M1.Age)



abstract class Dog1 { //abstract抽象类   若要继承这个类,必须实现里面的方法
      abstract jiao() : void  //void 无返回
      
}

class jingmao extends Dog1 {
      jiao(){

      }
}

class zangao extends Dog1 {
      jiao(){

      }
}



// 接口与类的组合
interface ifly {
      fly() : void
}
interface ieac{
      fly() : void
}

interface izzz extends ifly, ieac{
      
}

class Bird implements ifly, ieac {
      eat()  : void {

      }
      fly () : void {

      }
}
原文地址:https://www.cnblogs.com/javascript9527/p/12501424.html