TypeScrip

--------------更新于2020年7月20日-----------------
错误提示TS2307: Cannot find module ***.vue;
解决方案
在任意一个后缀名为.d.ts的文件里面写入即可

declare module '*.vue';

tips: 发生这样的错误是因为TypeScript识别不了vue类型的文件,所以需要用户任意定义一个声明文件.d.ts结尾的文件。以此类推,如果遇到*.svg 、*.png 、*.jpg 、*.jpeg 、*.gif 、*.bmp 、*.tiff 、*.json后缀名的话,也这样定义即可。这里需要提示一下,定义了.d.ts文件,放在项目任意位置都可以,typescript会去全局识别,不过一般我们推荐放在src/typings/下面。
补充:有读者留言说如果遇到找不到npm上面的第三方包,怎么办。同样原理,不管你是echarts、jquery还是moment,都可以通过达到目的。

declare module 'jquery'
declare module 'echarts'
declare module 'moment'

定义好你就可以在具体的组件里面通过
import JQ from 'jquery'
import Echarts from 'echarts'
import Moment from 'moment'
来使用啦

语言
开发人员都知道,强类型语言能在编译的时候就发现问题,越早发现问题,付出修复的成本就越低,JavaScript是一门弱类型的语言,所以JavaScript编译器不能检测出类型错误。任何事物都有双面性,并不一定说强类型就可以避免开发的所有问题,而且强类型检测找到的错误并不是令我最头疼的错误。另一方面JavaScript是自由的,无需复杂的类层次,不用做强制转型,也不用疲于应付类型系统以得到想要的行为。

# JavaScript的继承与其它面向对象语言的继承区别
JavaScript有一个原型继承的概念,通过原型去继承属性 ex:fn.prtotype.xxx
面向对象语言则是通过类去继承属性  class Test {
   }  class Demo extends Test {
   }

多态应用在JavaScript开发中是比较少的,但是TypeScript完美继承了面向对象的多态
TS概念

派生类
所谓的派生类是相对于父类而言,可以理解为子类,或者更通俗点就是继承了父类的属性而且还保留自己本身的特性的类。


泛型约束

泛型出现的目的是解决函数只能传入某种类型的参数:
一般函数参数声明的写法,这样很限制功能的拓展,最起码我只能传固定类型的,那么有没有一种方法可以让我传不同类型,然后让编译器自己推断传入的参数类型进行校验呢?而且我希望以后传入的东西还可以是interface接口。泛型应运而生

function example1(arg:string):void {
    // 普通泛型写法
    console.log(6666)
}

function example<T>(arg:T):T{
   
    console.log(arg.length); // 会报错,因为参数传入可能是一个Number类型,不是数组
    return arg;
}

这样编译器就可以根据传入的参数类型不同推论出返回值的类型,但是存在一个问题,就是我不需要那么宽泛的约束,我只需要在一定范围内的泛型约束,如果满足就允许进去,如果不满足那么就限制,泛型约束要进行一次升级至---泛型约束
interface MustHaveLength {
   
    length: number;
}

function example<T extends MustHaveLength>(arg:T):T{
   
	console.log(arg.length);
    return arg;
}
多重泛型
ex: x<interface<T>>  // 多重泛型解决一个对象多重嵌套问题
export interface ResponseData<T = any> {
   
    code: number;
    result: T;
    message: string;
}
export function getUser<T&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值