初学-TypeScript-笔记02

// 接口interface

// 定义对象类型的另外一种方式 写法 与 type 对象 相差一个 =  号  用法一样

interface Point {

x:number,

y:number

}

function printCoordInter(pt:Point){

console.log(pt.x);

console.log(pt.y);

}

printCoordInter({x:1,y:2});

// 类型别名与 接口interface  有什么不同

//扩展接口  接口interface

interface Aniaml {

name:string

}

interface Bearextends Aniaml{

honey:boolean

}

const bear:Bear ={

name:'winie',

honey:true

}

console.log(bear.name);

console.log(bear.honey);

// 扩展接口  type  交叉扩展

type Aniaml02 = {

name:string

}

type dog = Aniaml02 & {

honey:boolean

}

const cat : dog = {

name:'小黑',

honey:true

}

console.log(cat.name)

console.log(cat.honey)

// 向现有的类型中添加新的字段  接口interface  再写一个相同的名称  不同的字段即可

interface myWindow {

name:string

}

interface myWindow {

title:string,

age:number

}

const w: myWindow = {

name:'小白',

title:'小白的title',

age:100

}

console.log(w.name)

console.log(w.title)

// 通过 tyle 扩展的时候 是不可以通过同名扩展

//类型断言  指定更具体的类型

const myCanvas =document.getElementById('main_canvas')as HTMLCanvasElement;

//或者

const OrmyCanvas = document.getElementById('main_canvas');

const x ='hello' as string;

const y1 = ('hello' as unknown)as number;//不知道 hello 是什么类型

const y2 = ('hello' as any)as number;//不知道 hello 是什么类型

// 文字类型  这种情况 state 只能传入固定的 'left'| 'right'|'center'  这三种的其中一个 就是文字类型

function pring(s:string,state:'left'|'right'|'center'){

console.log(s)

console.log(state)

}

pring('22','left');

//扩展

function request(url:string,methods:'GET'|'POST'|'PUT'){

console.log(url)

console.log(methods)

}

const req = {

url:'https://localhost',

method:'GET' as 'GET'// 这里 只能这样写 是最合适的 或者在调用的时候 断言成 request(req.url,req.method as 'GET') 也是可以的

}

request(req.url,req.method)// 这里写成req.method 会报错  要修改 上面 的 req 进行断言 才可以

//写function 的时候 做一个 可选参数传入  就是在参数后面 增加一个 ? 号即可

function change(x?:string |null){

if(x){

console.log(x)

}

//或者 写成

    console.log(x!.toString())// 增加一个 ! 表示x 不为 null 的时候  不要过多使用!

}

change()


// 枚举enum

enum Direction {

Up =1 ,

Down,

Left,

Right

输出的时候 就会依次 输出 1 2 3 4 不赋默认值的话 就是从0 开始  依次累加


// bigint Symbol

// const num2:bigint =  BigInt(100)

//Symbol 全局唯一引用 赋同样的 值  但是 返回的 不一样



typeof 类型守卫  真值缩小 等值缩小等 这些的 我个人理解就是将数据类型通过判断 更加具体化 细节代码我就不做了 有兴趣的小伙伴可以去学习视频

//in 操作符缩小

type Fish = {swim: () =>void};

type Brid = {fly:() =>void};

type Human = {swim?:() =>void,fly?:() =>void}

function move(aniaml:Fish | Brid | Human){

if('swim' in aniaml){

return (aniamlas Fish).swim();

}

return (aniamlas Brid).fly();

}


// instanceof 方法 来检查一个值是不是另外一个值的实例

function log(x:Date | string){

if(xinstanceof Date){

}else{

}

}

log(new Date());

log('hey')


分配缩小  我个人理解的就是 利用三元表达式 进行类型判断

控制流分析 就是增加if条件判断 控制返回数据类型

// unions never 穷尽性检查

// 个人理解 这块就是一个 类似 switch case  的默认判断类型 可以设置成never

interface Circle {

kind:'circle',

slideLength:number

}

interface Square {

kind:'square',

slideLength:number

}

interface Triangle {

kind:'triangle',

slideLength:number

}

type Shape = Circle | Square | Triangle

function getArea(shape : Shape){

switch (shape.kind){

case "circle":

return 'xxx'

        case "square":

return 'xxx'

        case "triangle":

return 'xxx'

        default:

const others :never =shape

return others

    }

}

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

推荐阅读更多精彩内容