TS笔记 | 青训营笔记

74 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

初试

  • 创建一个TS文件
  • 终端 tsc XXX 将ts编译

TS 的类型声明

在变量中用
let a:number
a=10
​
在函数中用
function sum(a:number,b:number):number{
    return a+b;
}
​
​
类型:number string Boolean
​
let b:'male'|'famale'
b="male"
​
let c:any
c=10
c='qqq'
c=true
​
任意类型
let e:{name:string,[propName:string]:any}
e={name:'zcz',age:18,gender:'nan'}
​
let f:(a:number,b:number)=>number;
d=function(n1:number,n2:number):number{
    return n1+n2
}
​
//数组
let g:string[];
let h:number[];
​
//枚举
enum Gender{ //定义枚举类型可以把所有可能的值都列举出来
    Male = 0,
    Female = 1,
}
let k: {name: string, gender: Gender};
k = {
    name: '孙悟空',
    gender: Gender.Male
}
console.log(k.gender === Gender.Male)
​
&表示同时满足
let o: {name: string} & {age: number};
o = {name: '孙悟空', age:18}
​
//类型的别名
type myType = 1 | 2 | 3 | 4 | 5;
let p: myType;
let l: myType;
let m: myType;
p = 2;

TS编译选项

TS配置文件

//tsconfig.json
{
​
    //"include":表示编译范围,不能为空
    "include": [
        // '**'任意目录,* 任意文件
        "./src/**/*"
    ],
    //"exclude": 表示不编译范围,可以为空,
    // 一般不需要被编译,有默认值["node_modules", "bower_components", "jspm_packages"]
    "exclude": [
        "./src/**/exclude.ts"
    ],
​
​
    //"compilerOptions":编译器选项
    "compilerOptions": {
        //编译的ES版本--esnext为最新版本,不知道有什么版本的话,先随便写(abc)然后编译器报错里面有提示
        "target": "ES6",
        // 模块化规范
        "module": "amd",
        // 用于指定所需要用到的库
        "lib":[
            "dom", "es2016"
        ],
        // 用于指定生成的js文件放置的位置
        //*************************outDir和outFile可能会冲突!!!****************************
        "outDir":"./dist",
        // 所有的全局作用域中代码合并到同一个文件中
        //!!!!此时"module": "amd"或"system",(Only 'amd' and 'system' modules are supported alongside --outFile.)
        "outFile": "./dist/app.js",
        // 是否对js文件进行编译
        "allowJs": true,
        //是否检查js文档是否规范
        "checkJs": true,
        // 是否移除注释 
        "removeComments": true,
        // 不生成编译后的文件,不想生成js文件
        "noEmit": true,
        // 有错误时不生成js文件
        "noEmitOnError": false,
​
​
        // =============严格检查================
        // 严格检查总开关(建议开)
        "strict": true,
        // 用来设置编译文件后是否使用严格模式
        "alwaysStrict": true,
        // 不允许使用隐式any
        "noImplicitAny": true,
        // 不允许没有指定this 
        "noImplicitThis": true,
        // 不允许有可能对空值进行操作的情况
        "strictNullChecks": true,
    },
    
}