TS入坑

周末无聊 跟着技术胖来学点TS

大家可以去B站看看ts
文本教程 https://www.runoob.com/typescript/ts-tutorial.html

// 安装 ts cnpm install -g typescript 有tsc的全局命令
// 安装ts-node cnpm install -g ts-node // 有全局ts-node的命令
// tsc demo1.ts  + node demo1.js
// ts-node ts-node demo1.ts
const str:string = 'hello world' 
console.log('111', str)

// 申明变量
let cnt: number = 1
let str1: string = 'hello ts'
let flag: boolean = true
console.log(cnt, str1, flag)

// 定义静态类型
interface XiaoJieJie {
    name:string,
    age: number
}

const xiaohong : XiaoJieJie = {
    name: '小红',
    age: 18
}
console.log(xiaohong.name+ xiaohong.age)


// 基础对象类型
const cnt1 :number = 12
const myName:string = '123'
const vNull: null = null
const vUndefined: undefined = undefined
const vBool: boolean = true
const vVoid: void = null
// 对象类型
const XJJ:{
    name:string,
    age:number
} = {
    name:'xxxx',
    age: 23
}
// string数组
const XiaoJieJies:string [] = ['小红','小华', '小S']

// 类形式的类型
class Person{

}
const p1 :Person = new Person()

// 函数类型
const xjj: ()=> string = () => {return '1111'}

const isXjj: ()=> boolean = () => {return true}

// 类型注解 和类型推断
// 能够分析的就不用注解 不能分析出来的 需要写类型
const a1 = 1
const a2 = 'str'
const a3 = a1 + 3 // 这样的a3能自动推断出为number类型
const a4 = a1 + a2 // a4自动推断为string类型

// 下面的列子 不能推断 所以total都是显示any类型
function getTotal(one, two) {
    return one + two
}
const total = getTotal(1,2)
const total1 = getTotal(3,4)
// 
// 每一个属性的类型都是固定 

const numberArr = [1,32,4]

const numberArr1: number[] = [1,3,2,4]
const strArr:string[] =['1','2','3','4']
const undefinedArr: undefined [] = [undefined, undefined]

// arr0能自动推断为number 为string
const arr0 = [1, '1']
// 能自动推断
const arr1:(number | string |boolean) [] = [1, '1', true]

// 对象类型的数组
const xjjobj : {name: string, age:number}[] = [{name: 'xxx', age:17}, {name: 'xxxx', age: 18}]

// 使用type alias设置对象类型别名
type Lady= {name: string, age: number}
const xxxArr: Lady [] = [{name: 'xxx', age:17}, {name: 'xxxx', age: 18}]

// 也可以使用类来代替
class Madam {name: string; age:number} // 注意class的写法使用分号 
const xxxxArr2: Madam [] = [{name: 'xxx', age: 19}]
// demo2.ts
// 数组组
const xiaojiejie = ['dajiao', 'teacher', 28]
// const xiaojiejie: (string | number)[] 不能控制对应的次序
// 元组 能控制每一个员的次序
const xiaojiejie1: [string,string, number] = ['dajiao', 'teacher', 28]

// csv 元组数组
const xiaojiejieArr:[string,string, number][] = [['dajiao', 'teacher', 28]]

// interface
interface XJJModel {
    name:string,
    age:number,
    bust:number
}
const x1:XJJModel = {
    name:'xxx',
    age: 18,
    bust: 100
}
const getXJJModels =():XJJModel[] => {
    return [x1]
}

// 类型别名
type Girl1 = {
    name:string,
    age:number,
    bust:number
}

// ?: 标识是可选的 

// eg 
type Girl2 = {
    name:string,
    age:number,
    bust:number,
    wasitline?:number // 可选的值
}

const gir1:Girl2 = {name:'xxx', age: 18, bust: 111,wasitline: 14} 

console.log(gir1.name, gir1.age)

// 
interface GirlModel {
    name:string,
    age:number,
    bust: number,
    sex:string,
    // 可选
    grade985?: boolean
    // 能加任意类型 任意多的
    [propname: string]: any,
    // 函数的返回值控制
    say():string
}

const g1:GirlModel = {
    name: 'g1',
    age: 18,
    bust: 96,
    sex: '女',
    grade985: true,
    xxxx: '我是任意的',
    say() {
        return 'welcome'
    }
}
console.log(g1.name + ' '+ g1.grade985 + ' '+ g1.xxxx+ ' say'+ g1.say())

enum SEXY {
  Man,
  Woman,
}
interface Gril {
  name: String
  age: Number
  sex: SEXY
  breast: Number
  feetSize?: Number
  isTeacher?: Boolean
  say(): string
  tech(): void
}

const gg1: Gril = {
  name: '小芳',
  age: 20,
  sex: SEXY.Woman,
  breast: 98,
  feetSize: 30,
  say() {
    return 'English'
  },
  tech() {
    console.log('I canot tech')
  },
}

class gg2 implements Gril {
  name = '小丽'
  age = 19
  sex: SEXY.Woman
  breast: 99
  xxx: 'ttt'
  xxxx2: 'tttt2'
  say() {
    return 'Franch'
  }
  isTeacher = true
  tech() {
    console.log('I can tech ')
  }
}

console.log(gg1.name + ':' + gg1.say() + '::' + gg1.tech())
const gg2Instance = new gg2()
console.log(gg2Instance.name + ':' + gg2Instance.age + ':' + gg2Instance.tech())

// 自己学习的一个ts
class Rect {
  l: number
  w: number
  constructor(lo, wi) {
    this.l = lo
    this.w = wi
  }
  area() {
    return this.l * this.w
  }
  zhouLong() {
    return 2 * (this.l + this.w)
  }
}

const l1 = new Rect(20, 20)
console.log(l1.area() + ':' + l1.zhouLong())

class Sq extends Rect {
  constructor(l) {
    super(l, l)
  }
  square = true
}
console.log(new Sq(40).area() + 'is Square:' + new Sq(50).square)

interface Ci {
  pi: number
}

class Circel extends Sq implements Ci {
  pi = 3.1415
  area() {
    return super.area() * this.pi
  }
}

const c1 = new Circel(1)
console.log(c1.area())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270