ts中配置文件tsconfig
{
// tsconfig.json是js编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译
// "include": []用来指定那些ts文件需要被编译
// 路径:**表示任意目录,
// *表示任意文件
// "exclude": [], 不需要被编译的文件目录
// 默认值:["node_modules","bower_component","jspm_packages"]
"include": [
"./one/**/*"
],
"exclude": [
"./one/two/**/*"
],
"compilerOptions": {
// target 用来指定ts被编译为的es的版本
"target": "ES2015",
// module 指定要使用模块化的规范
"module": "ES2015",
// lid用来指定项目中要使用的库
// "lib": ["dom"]
// outDir 用来指定编译后文件所在的目录
"outDir": "./dist",
// 设置outFile后,所有的全局作用域中的代码会合并到同一个文件中
// "outFile": "./dist/app.js"
//是否对js文件进行编译,默认为false
"allowJs": false,
// 是否检查js代码是否符合语法规范
"checkJs": false,
//是否移出注释
"removeComments": false,
// 不生成编译后的文件
"noEmit": false,
// 当有错误的时候不生成编译后的文件
"noEmitOnError": false,
// 用来设置编译后的文件是否使用严格模式,
"alwaysStrict": false,
//不允许隐私any类型
"noImplicitAny": false,
//不允许不明确类型的this
"noImplicitThis": false,
//严格检查空值
"strictNullChecks": false,
//所有严格检查的总开关
"strict": false
}
}
ts声明变量类型
// 声明一个变量a,并指定他的类型
let a : number;
a = 1;
// a = 'daad' 指定的为数字类型,提示不可以为字符串类型,但依然可以解析ts文件为js文件
// console.log(a)
let b : string;
b = '猴子世界';
// b = 123;
//指定类型为字符串,那他的赋值类型也就必须是字符串
//声明变量类型直接进行赋值
// let c:boolean = false
// 如果声明变量与赋值是同时进行的,ts会自动检验类型,为boolean
let c = false
// c = 1323
// js中的函数是不用考虑形参有多少
// !js这样写可以
// function sum(sum1,sum2){
// return sum1 + sum2
// }
// console.log(sum(1,2,3))
// ts 中可以规定他的实参类型,以及返回类型
function sum(sum1:number,sum2:number):number{
return sum1+ sum2
}
console.log(sum(2,2))
// 可以直接用字面量进行变量命名
let a :10;
// a = 12
// 定义之后,变量只能是定义的10
// |或的意思,变量命名
let b :10|12;
b = 10
b = 12
// 所以赋值变量既可以是10也可以是12
// c的类型是字符串或buer或数字
let c :string|boolean|number
c = '猴子战场';
c = true;
c = 1;
// 表示同时
let s : {name:string} & {age:number}
s = {name:'猴子',age:10}
// any类型,表示任意类型,类型为any表示关闭ts类型检测
// 不介意使用
let d : any;
d = 1;
d = '猴子';
d = false;
// 不写类型,ts编辑器会自动判断类型为any
// 更不介意使用
let e;
e = 1;
e = '猴子';
e = false;
// unknown 表示任意类型,和any很像
let f : unknown;
f = 1;
f = '猴子爹'
f = true;
let g : string;
g = d
// 因为d是any类型,他可以赋值给任意变量
// any与unknown的区别unknown是一个安全的any,不能直接赋值给其他变量
// unknown 判断
if(typeof f === "string"){
g = f;
}
// 类型断言
g = f as string;
//<>
g = <string> f
// void 表示空 表示没有返回值的函数
function fn() :void{
}
//never,表示永远不会有返回结果空也不行
function fn1() :never{
throw new Error('报错')
}
// object表示一个js对象
let h : object;
h = {};
h = function(){}
// {} 用来指定对象中包含哪些对象
// 语法 : {属性名:属性值,属性名:属性值}
// 在属性名之后加上?号,表示可有可不有
let i : {age?:number,name:string}
i={
name:'嘿嘿',
}
// [属性名:属性类型]:any 表示任意类型的属性
let j : {name:string,[xx:string]:any}
j = {name:'猴子',b:12,c:'嘿嘿'}
// 设置函数解构的类型声明
// 语法:(形参:类型,形参:类型...)=>返回值
let k : (a:number,b:number)=>number
// let k : function (sum1:string,sum2:number):number {
// return 10
// }
ts中数组
// ts中定义数组 number[]什么类型的数组
let a :number[]
a=[1,]
let b : string[]
b = ['1',]
// 定义数组
let c : Array<number>
// ts中的元组 元组就是有固定长度的数组
let d : [string,string]
d = ['猴子','香蕉']
// ts中的枚举enum
enum Gender{
Male = 0,
Female = 1
}
let e : {name:string,gender:Gender}
e = {
name:'猴子',
gender:Gender.Male
}
// ts中起别名
type monkey = 1|2|3;
let f:monkey;
f = 1