关于TypeScript的一些入门笔记一.

一.普通变量声明时:

TS中的核心用法离不开 " : " 没错,就是冒号。冒号后面可以直接定义你这个变量的类型,

当你没有定义 变量类型的时候,ts会在你给变量赋值的时候隐式的帮你声明,如下图我并没有声明变量B的类型,却会再我准备给B再次赋值的时候提示我:

二.类(如果你对类的概念还不了解,我的建议是去mdn上补习js 类的相关知识 )

(同理和普通变量一样,你也可以不设定属性类型)

 ts会帮你自动判断,不过实际情况中并不会省略,在这里只是说明一下可以这样写。

 per是person类的实例化对象,person类里面的属性和方法都会在实例化对象per中存在。(儿子继承里爸爸的一些基因不过分吧~)

有一种特殊的情况,当你不想实例化就调用类里的方法或者属性时,可以在person类属性前加上关键字static(静态的)那么这个属性就称为里类独有的属性,简称为类属性。

那么这时候 name这个属性就不会被"复制"到实例化对象上,你可以暂时理解为是这东西是 爸爸 私有的,不允许 儿子 继承 。

同理 class里也可以定义方法

还有es6的剪头函数写法 

 都是可以的.

但是聪明的你可能发现了,我在定义类的时候已经把属性写死了,那我new出来的所有实例化对象都具有相同的名字,年龄,方法。那就没什么意义了,我还不如直接声明一个对象来的痛快呢。

这时候迎来一个让初学者闻风丧胆的,这位更是重量级的选手,constructor()构造函数

是不是听见 构造 这两个字就头疼,其实当你理解了它就是那么一回事。

说实话,刚开始学习js的时候,看见constructor()我就害怕,看文档只要看见这个词,我就想翻页。

但是现在不要慌,我带你一步一步分析。

有句老话,一切不以结婚为目的的谈对象都是刷流氓。

在类里面,一切不以实例化为目的的定义类,都是空气!

怎么理解这句话呢,就像上面的代码,当我new一个实例的时候,并且它也没有静态方法,那么它在代码里是没有存在意义的,可以当成空气。

但是如果我现在new了一个新的实例。

 没错,我的new就会去寻找这个constructor,它其实就是一个普普通通的函数却又不那么普通罢了。this的指向永远是指向新的实例化的那个对象的,关于this推荐 阮一峰大侠的文档 的解释,小辈属实没有讲解this指向的本领。

你只需要知道我new person 的时候就会去找person类里 的构造函数就好了。

需要注意的是,你new的是一个类,首先要保证的是,你这个类里需要有这两个属性,才可以赋值,你的类是有两部分组成的,1,属性 2,构造函数

 

 这时候ts会提示,你特么都没有这个属性,你让我构造器创造这个属性,你逗我呢?所以正确的写法是下面这种。

 你可能会问,啊,我类里面有属性声明了,我构造器为什么参数还要再写一遍?麻烦死了。

不要问,记住是这样写的就行了。

还有一种情况刚开始的小伙伴很容易迷

有的教程里突然在下面来里个方法,就一下子蒙了,刚刚不是还在构造器里设置属性吗?为什么突然跑出去在外面了?我知道你都疑惑肯定是为什么 call方法不能写在构造器里呢?这样不也就是相当于给实例对象新的方法吗?

你要记住,你new的时候是调用constructor,你方法写在这里面相当于你让构造器给你执行了,并不是你在给new的实例赋予这个方法。懂了吧。什么?你还不明白,好,我给你换一种写法

懂了吗?其实方法是等价于写到这里的。

不过一般都是方法写在构造器下面,构造器只是赋予实例化对象属性值的。 

class还有一种类型,就是抽象类,乍一听这么牛逼的名字肯定很厉害吧。其实abstract类和普通的类的内容设置并无区别,区别在于抽象类不能实例化对象,就是不能new

 

 你可能会问,我类不就是用来实例化对象呢吗?不是刚说不用来实例化对象的类都是耍流氓吗?

我举个例子,比如我现在想缩小一下范围,我想定义一个man类和woman类。里面的属性可以直接继承与person。那么我现在的person类是不是就不需要实例化对象了?因为我已经缩小对象属性的范围了不是person了,是man和woman了。

换一句话说:抽象类就一个功能,我就是给其他类当爸爸的,本质写法上和其他类并无区别。

abstract class :是的,生而为爹,我很抱歉!

抽象类里还可以有抽象方法,并且抽象方法只能写在抽象类

 如果一个类extends这个person类,那么它必须给这个抽象类设定这个call方法的具体逻辑运算,也就是void位置的逻辑运算。如果不设定,会报错。感觉这个中文翻译不正确,原英文意思是:woman类没有实现(implement)来自于继承(extends)的抽象类(person)的“call” 方法 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集。它添加了静态类型和面向对象编程的特性,并提供了更强大的工具和功能来帮助开发者编写可维护和可扩展的代码。 2. TypeScript 的优势和用途: - 静态类型检查:TypeScript 引入了静态类型系统,可以在编译时捕获一些常见的错误。这可以提供更好的代码质量和可靠性,并减少在运行时出现的错误。 - 更好的代码维护性:TypeScript 提供了类、接口、模块等面向对象编程的特性,使得代码更易于组织和维护。它还支持代码重构、智能感知和代码导航等功能,提高了开发效率。 - 渐进式采用:TypeScript 可以与 JavaScript 无缝集成,可以逐步将现有的 JavaScript 代码迁移到 TypeScript,而无需重写全部代码。这使得团队可以逐步采用 TypeScript,而不需要一次性投入大量时间和资源。 - 社区支持和生态系统:TypeScript 拥有庞大的开发者社区和丰富的第三方库支持,可以轻松地与其他流行的 JavaScript 框架和工具进行集成。 3. TypeScriptJavaScript 的关系: TypeScriptJavaScript 的超集,这意味着任何有效的 JavaScript 代码都是有效的 TypeScript 代码。TypeScript 扩展了 JavaScript,添加了静态类型、类、接口等新的语法特性,并提供了更丰富的工具和功能来提高开发效率和代码质量。TypeScript 代码可以通过编译器将其转换为 JavaScript 代码,这样可以在任何支持 JavaScript 的环境中运行。因此,开发者可以使用 TypeScript 来编写更可靠、可维护和可扩展的代码,同时仍然可以享受到 JavaScript 生态系统的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值