TypeScript学习笔记

101 阅读2分钟

TypeScript --笔记

一、TypeScript开发环境

1、Node.js下载安装

2、Npm全局安装TypeScript

  • npm i -g typescript
  • tsc

3、创建Ts文件

  • demo.ts

4、使用tsc 对 ts文件编译

  • 打开对应demo.ts文件路径的cmd窗口
  • tsc demo.ts

二、基本类型

1、类型声明

1662866775916.png

  • 字面量

    //1、字面量,同时可以使用 | 来添加多个可能的变量值 或者 变量类型
    let b : "male" | "female"
    b = "male"
    b = "female"
    // b = "hello" 这样就不行了
    let c : boolean | string;
    c = true;
    c = 'hello'
    
  • any 尽量不要用

    //2、any 表示任何值 及 类型 都可以,尽量不要使用any
    let d : any; //显式any ; 如果不指定类型,则TS解析器自动判断该变量是any 隐士any
    d = 20;
    d = 'hello'
    
  • unknown

    //3、unknown  表示未知类型
    let e : string
    let f : unknown
    f = 'hello'
    e = f as string  //可以用来告诉解析器变量的实际类型
    e = <string>f  //也可通过<>方式来声明变量的实际类型
    
  • 数组Array

    //4、数组,尽量存储同种类型,长度不限制
    let m : number[]  //或者let m : Array<number>
    m = [1,2,3,4]
    
  • 元组tuple

    //5、元组:固定长度的数组,具体语法: [类型,类型,类型]
    let o : [string, string]
    
  • 对象Object

    //6、object对象, 可用{}来指定对象中可以包含哪些属性
    let h : {name: string, age?: number}  //表明h对象中只能有name或者age,其中age可有可无
    let g : {name: string, [propName: string]: any} //这种方式会指定后面多个参数的属性名及属性值的类型
    g = {name: 'smallTiger', gender: 'male'}
    
  • 函数function

    //5、设置函数结构的类型声明,具体语法:  (形参1: 类型, 形参2: 类型) => 返回值类型
    let j : (a: number, b: number) => number
    j = (l, n) => {
        return l + n
    }
    

2、编译选项

三、接口

作用:一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。

  • 指定 键值对的值类型
interface RunOptions { 
    program:string; 
    commandline:string[]|string|(()=>string); 
} 

// commandline 是字符串
var options:RunOptions = {program:"test1",commandline:"Hello"}; 
console.log(options.commandline)  
 
// commandline 是字符串数组
options = {program:"test1",commandline:["Hello","World"]}; 
console.log(options.commandline[0]); 
console.log(options.commandline[1]);  
 
// commandline 是一个函数表达式
options = {program:"test1",commandline:()=>{return "**Hello World**";}}; 
 
var fn:any = options.commandline; 
console.log(fn());
  • 指定 键值对的索引值类型
interface namelist { 
   [index:number]:string 
} 
 
// 类型一致,正确
var list2:namelist = ["Google","Runoob","Taobao"]
// 错误元素 1 不是 string 类型
// var list2:namelist = ["Runoob",1,"Taobao"]
  • 支持接口继承
interface IParent1 { 
    v1:number 
} 
 
interface IParent2 { 
    v2:number 
} 
 
interface Child extends IParent1, IParent2 { } 
var Iobj:Child = { v1:12, v2:23} 
console.log("value 1: "+Iobj.v1+" value 2: "+Iobj.v2)