TypeScript

入门命令

npm i typescipt -g
tsc src_file.ts

声明和类型

let a:number;
a=12;
a='12';//报错

let b=123;
b='123';//报错 会自动赋值类型

//函数
function sum(a:number,b:number):number{
    return a+b;
}

let c:11;//字面量数据类型
c=11;
c=12;//报错

let d:string|number;//联合类型 允许赋值为string或者number数据类型
d=123;
d='123';
d=false;//报错
  • number
  • string
  • boolean
  • 字面量类型
  • any
    相当于关闭了类型检测

    let a let a:any两者等同

  • unknown

    unknown在给别类型的变量赋值时会提示错误,相当于一个类型安全的any

    let b:number;
    let f:unknown=123;
    //这种情况不会报错
    if( typeof f==='number' ){
        b=f;
    }
    
    b=f as number;//断言  告诉解析器实际类型
    b=<number>f;//断言 方法二
  • void
  • never
    用来报错的

    function fn():never{
        throw new Error('error');
    }
  • object

    let a:{};
    a={name:'jpc',age:21};//无任何限制
    let b:{
        name:string
    };
    b={name:'jpc'};//正确
    b={name:'jpc',age:21};//报错
    let c:{
        name:string,
        age:number
    };
    c={name:'jpc',age:21};//正确
    c={name:'jpc'};//报错
    let d:{
        name:string,
        age?:number
    };
    c={name:'jpc',age:21};//正确
    c={name:'jpc'};//正确
    c={name:'jpc',age:21,a:1};//报错
    let e:{
        name:string,
        [propName:string]:number
    };
    e={name:'jpc'};//正确
    e={name:'jpc',a:1};//正确
    e={name:'jpc',a:'1'};//报错
    
    let f:{name:string}&{age:number};
    f={name:'jpc'};//报错
    f={name:'jpc',age:21};//正确
    
    //函数的定义
    let fn:(a:number,b:number)=>number;
  • array

    let a:number[];
    let b:Array[number];
  • tuple(元组,长度固定的数组)

    let a:[number,string];
    a=[1,'1'];
    a=['1',1];//报错
    a=[1,'1',1];//报错
  • enum

别名

type myType=string;
let a:myType;
a='123';
a=123;//报错

配置选项

{
    /**
    指定哪些文件需要被编译
    **=>任意目录
    *=>任意文件
    */
    "include": [
        "./src/**/*"
    ],
    /**
    不需要被编译的文件目录
    */
    "exclude": [
        "./src/hello/**/*"
    ],
    //继承其他文件的配置
    // "extends": "./xxx/xxx.config",
    //编译器选项
    "compilerOptions":{
        //指定ts被编译为es的版本
        "target": "ES3",
        //导入模块所使用的版本
        "module": "es6",
        // "lib": [],
        // 文件编辑好存放的目录
        "outDir":"./dist",
        // 将所有文件合并为一个文件
        // "outFile": "./dist/app.js",
        // 是否编辑js文件
        "allowJs": true,
        // 检查js文件的语法
        "checkJs": false,
        // 移除注释
        "removeComments": false,
        // 只编译,不生成编译完的js文件 主要拿来检查语法
        "noEmit": false,
        // 编译时遇到错误 就不编译
        "noEmitOnError": true,
        // 使用严格模式
        "alwaysStrict": true,
        // 不允许使用隐式any
        "noImplicitAny": false,
        // 不允许使用隐式this
        "noImplicitThis": false,
        // 严格检查空值
        "strictNullChecks": false,
        // 所有严格检查的总开关
        "strict": false
    }
}