测试方便使用 :npm i ts-node -g 可以 编译 并且 跑在node上
ts-node 依赖 另外2个包 : npm i tslib @types/node -g
运行 : ts-node 文件名.ts
正式的肯定用脚手架
let/const 标识符 :数据类型 = 赋值
细节1.
// string : TypeScript中的字符串类型 // String : JavaScript中的字符串包装类的类型 const name: string = "abc" const age: number = 18 console.log(name,age);
细节2.
// 默认情况下进行赋值时,会将赋值的值的类型,作为前面标识符的类型 // 这个过程称为类型推导/推断 // foo 没有添加类型注释 let foo = 'foo' foo = 123
细节3.
// 加上可以避免报错 : 报错的原因是 : 命名如果在window下有一样的名字,或者在当前文件夹下有相同的,就会报错. 作用域问题 export {}
数组写法
// 只知道names是一个数组类型,但数组中存放的是什么类型的元素 // 一个数组在ts开发中,最好存放的数据类型是固定的[相同类型] const names: Array<string> = [] //不推荐这种写法 names.push("abc") const names1:number[] = [] //推荐这种写法 names1.push() names1.push(123)
对象的--不采取的
// 这种写法不可 : 因为 console.log(info.name); 取不出来的 // 推荐采用自动推导 const info:object = { name:"why", age:18 } console.log(info.name);
symbol的应用场景
// symbol的应用场景 const title1 = Symbol("title") const title2 = Symbol("title") const info1 = { [title1] : "程序员", [title2] : "老师" }
以下是typescript 才有的类型
any类型 【跟不写就一样了】// typescript才有的类型 - any类型 // 在某种情况下,我们无法确定一个变量的类型,并且可能他会发生一些变化,这个时候就用any类型 // 在不想给某些JavaScript添加具体的数据类型时,就用any(原生JavaScript代码一致) let message:any = "hello" message = 123 message = true message = {} message = null message = undefined message= [] const arr:any[] = []
unknown类型
// typescript才有的类型 - unknown类型 // 描述类型不确定的变量 // unknown 只能赋值给any 和 unknown 类型 // 但是any类型可以赋值给任意类型 function foo1(){ return '123' } function foo2(){ return '123' } let flag = true let result: unknown //最好不要使用any if(flag){ result = foo1() }else{ result = foo2() } let mess:string = result // 错误 unknown 只能赋值给any 和 unknown 类型 let mess1:number = result // 错误 unknown 只能赋值给any 和 unknown 类型 let mess2:unknown = result let mess3 = result //不写就默认是any
void类型
// typescript才有的类型 - void类型 // void 用来指定一个函数是没有返回值的,那么它的返回值就是void类型 // 可以将null 和 undefined 赋值给void类型,也就是函数可以返回null或undefined // 函数默认不写返回值 就是 void类型了 function sum(num1:number,num2:number){ console.log(num1+num2); } sum(20,30)
never类型 基本没用!!!
// typescript才有的类型 - never类型 基本没用!!! // never表示永远不会发送值的类型,比如一个函数 : // 如果一个函数中是一个死循环或者抛出一个异常,那么这个函数不会返回值, // 那么写void类型或者其他类型作为返回值类型都不合适,我们就可以使用never类型
tuple类型
// typescript才有的类型 - tuple类型 // tuple元祖 : 多种元素的组合 // “why” 18 1.88 const arr1: [string,number,number] = ['yjx',16,16]
函数的参数
普通参数
// 给参数加上类型注解 : num1: number,num2: number // 给返回值加上类型注释 : ():number function sum1(num1: number,num2: number):number{ return num1 + num2 } // 在开发中,通常情况下可以不写返回值的类型( 自动推导 ) function sum2(num1: number,num2: number){ return num1 + num2 }
匿名参数
// 匿名函数的参数类型 const names2 = ['abc','bcd','cdd'] // item 根据上下文的环境推导出来的,这个时候可以不添加类型注解 // 上下文中的函数:可以不添加类型注解 names2.forEach(function(item){ console.log(item); })
对象参数 和 可选类型
// 对象参数 // point : {x,y} --》 对象类型 // z : 是可以传,可不传 加个? 可选类型 function printpoint(point: {x:number,y:number,z?:number}){ console.log(point.x); console.log(point.y); } printpoint({x:111,y:333})
联合类型 参数
概念 : 1 联合类型是由两个或者多个其他类型组成的类型; 2 表示可以是这些类型中的任意一个值 3 联合类型中的每一个类型被称为联合成员function printID(id: number | string){ // 使用联合类型的值时,需要特别小心 if(typeof id === 'string'){ console.log(id.toLocaleLowerCase()); } console.log(id); } printID(123) printID('abc')
可选类型 和 联合类型
// 让一个参数本身时可选的 // 当一个参数是可选类型的时候,它其实类似于世这个参数是 类型/undefined 的联合类型 function fooo(message?: string){ console.log(message); } fooo()
类型别名
// 类型别名 type用来定义类型别名店 type IDType = string | number | boolean type PointType ={ x: number, y: number, z?: number } // 联合类型的优化 function printIDs(id: IDType){ // 使用联合类型的值时,需要特别小心 if(typeof id === 'string'){ console.log(id.toLocaleLowerCase()); } console.log(id); } printIDs(123) printIDs('abc') // 对象的优化 function printpoints(point: PointType){ console.log(point.x); console.log(point.y); } printpoints({x:111,y:333})
标签:const,log,ts,number,类型,console,any From: https://www.cnblogs.com/qd-lbxx/p/16800158.html