zoukankan      html  css  js  c++  java
  • typescript 语法总结

    export {}
    
    let name: number = 10
    console.log(name)
    let person: Array<number> = [10]
    console.log(person)
    let age:[number, string] = [10, '99']
    // 枚举
    enum Week  {
      a = 1,
      b = 2
    }
    const enum Colors {
      red, 
      yellow,
      blue
    }
    // !null undefined
    let root: HTMLElement | null = document.getElementById('app');
    root!.style.color = 'red'
    
    // void 没有返回值 空的没有
    function test(params:string): void {
      let actions = 1
      // return actions
    }
    
    // nerver 不会出现的值
    // 会抛出错误导致无法结束
    function crateNever(params:string): never {
      throw new Error("34343");
      
    }
    function sum(params:string): never {
      if (true) {
        console.log('a')
      }
      console.log('end')
      throw new Error("34343");
    
    
    }
    // 包装对象 
    // 自动在基本类型对象上进行切换
    // 基本数据类型上没有方法
    // 2 会在内部做一个装箱操作,包装为对象类型,然后用对象来调用方法
    
    let name2:string = '23423'
    // let name22 = new String(name2)
    // name22.toLocaleLowerCase()
    name2.toLocaleLowerCase()
    
    
    // 联合类型
    let name3: string | number;
    name3 = '23423'
    name3.toLocaleLowerCase()
    name3.toFixed()
     
    
    // 类型断言 as 可以转为想要的类型
    let name5 : string | number // = 3
    (name5 as string).toLocaleLowerCase();
    (name5 as number).toFixed();
    
    // 字面量类型 
    let gender: 'a' | 'b';
    // 不可以再赋值了
    // gender = 'c'
    gender = 'a'
    
    
    // 函数类型
    type getuserType = (params: string, oldname: string) => {name: string}
    let getUser: getuserType = function testname(params:string, oldname: string): {
      'name': string
    } {
      return {name: '234324'}
    }
    
    // 函数的可选参数 默认参数
    function print(name:string, age?: number, sex:string ='women') {
      
    }
    print('324', 2343)
    
    // 剩余参数
    function sums(...number:Array<number>) {
      return number.reduce((acc, item) => acc+item, 0)
    }
    sums(3,42,3)
    
    // 函数重载 限定调用的格式
    let aaa = {}
    // 这两个是用来限定的
    function attr(params: number): void;
    function attr(params: string): void;
    //
    function attr(params: any): void {
      if (typeof params == 'string') {
        
      } else if (typeof params == "number") {
        
      }
    }
    attr('2343')
    attr(2399324)
    // attr(true) //不可以
    
    // ts怎么写箭头函数 
    // 和js是一样的
    // 只是在定义类型的时候不一样
    type delayType = (ms: number) => void
    let delay:delayType = (ms: number) => {
    
    }
    
    //
    namespace a{
    
      class Person {
        myname: string;
        age: number;
        constructor(name: string) {
          // 初始化
          this.myname = name
        }
        get name() {
          return this.myname
        }
        set name(newVal: string) {
          this.myname = newVal.toLocaleLowerCase()
        }
      }
      let a1 = new Person('lifengsan')
      a1.name = 'shishanxiang'
    }
    
    
    // 继承
    
    namespace b {
      class Person {
    
        name: string;
        age: number;
        public color: string;
        private  string;
        protected height: string;
        constructor(name: string, age: number) {
          this.name = name;
          this.age = age
        }
        getName() {
          return this.name
        }
        setName(newName: string) {
          this.name = newName
        }
      }
      class Student extends Person {
    
        // 类属性
        static Type = 'student'
        // sex: string
        constructor(public sex: string, age: number, name: string) {
          super(name, age)
          this.sex = sex
        }
        // 类属性
        static getType = 'hah'
        // 实例属性 在原型上
        getStu() {
          return this.sex
        }
        setStu(newSex: string) {
          this.sex = newSex
        }
      }
      let s = new Student('nan', 10, 'fengliha')
      // Student.Type
      // Student.getType()
    }
    
    // 访问修饰符 public private protected
    // static 静态属性 静态方法

     

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/objectjj/p/14874981.html
Copyright © 2011-2022 走看看