变更定义
// 任意数据类型
let obj:any=1
// 数组 、
let arr:string=["str1","str2"]
let arr:Array<string>=["str1","str2"]
// 元祖类型
let arr:[string,number,boolean] = ["ts",3.18,true]
// 枚举类型
enum Flag{
success,
error=5,
warn
}
console.log(Flag.success) // 0 无上一元素并且没有赋值时候取当前索引
console.log(Flag.error) // -1
console.log(Flag.warn) // 6 以上一个元素的值为基础+1
// 定义多个类型的
var num:number | null | undefined
var a:never 从来不会出现的值?
函数
// 无返回值
function run(speed:number):void{
console.log(222)
}
// 匿名函数
var run = ():string=>{
return 'str'
}
// 可选参数 必须放在必选参数的后边
function getInfo( normalParam?:number):string{
if(normalParam){
}else{
}
}
// 默认参数
var run = (name:string="zhangsan"):void=>{
console.log(111)
}
// 剩余参数 利用三点运算符
function sum(...result:number):number{
遍历result求和
}
function sum(a:string, ...result:number):number{
遍历result求和
}
ts函数重载
function getInfo(name:string):string;
function getInfo(age:number):string;
function getInfo(str:any):any{
if(typeof str === 'string'){
return '我叫: '+str;
}else{
return '我的年龄是'+str
}
}
ts中类的定义
class Person{
name:string;
constructor(n:string){
this.name=n
}
run():void{
console.log()
}
}
// 继承
class Web extends Person{
constructor(){
super()
}
}
// 成员变量的修饰符
/*
不加默认public
public 本类 子类 外部
protected 本类 子类
private 本类
*/
// 静态属性
static sex = "男"
// 静态方法
static print(){}
// 抽象类
abstract class Animal{
abstract eat():any;
}
// 函数对传入json类型的参数进行约束
function printLabel(labelInfo:{label:string}):void{
console.log()
}
printLabel(l{label:'zhangsan'}): // 正确调用方式
// 属性类接口
interface FullName{
firstName:string;
secondName:string;
thirdName?:string; // 可选
}
function printInfo(info:FullName){
console.log(info.firstName + info.secondName)
}