TypeScript学习笔记
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, }; 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
}
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。