ts定义html是什么类型,JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)

这篇文章有更新!!!!请去 原文 阅读!!!

在 《从 JavaScript 到 TypeScript 系列》 文章我们已经学习了 TypeScript 相关的知识。

TypeScript 的核心在于静态类型,我们在编写 TS 的时候会定义很多的类型,但是主流的库都是 JavaScript 编写的,并不支持类型系统。那么如何让这些第三方库也可以进行类型推导呢?

这篇文章我们来讲解 JavaScript 和 TypeScript 的静态类型交叉口 —— 类型定义文件。

这篇文章首发于我的个人博客 《听说》。

前端开发 QQ 群:377786580

类型定义文件

在 TypeScript 中,我们可以很简单的,在代码编写中定义类型:

interface IBaseModel {

say(keys: string[] | null): object

}

class User implements IBaseModel {

name: string

constructor (name: string) {

this.name = name

}

}

但是主流的库都是 JavaScript 编写的,TypeScript 身为 JavaScript 的超集,自然需要考虑到如何让 JS 库也能定义静态类型。

TypeScript 经过了一系列的摸索,先后提出了 tsd(已废弃)、typings(已废弃),最终在 TypeScript 2.0 的时候重新整理了类型定义,提出了 DefinitelyTyped。

DefinitelyTyped 就是让你把 "类型定义文件(*.d.ts)",发布到 npm 中,配合编辑器(或插件),就能够检测到 JS 库中的静态类型。

类型定义文件的以 .d.ts 结尾,里面主要用来定义类型。

例如这是 jQuery 的类型定义文件 中一段代码(为了方便理解做了一些改动)

// 定义 jQuery 需要用到的类型命名空间

declare namespace JQuery {

// 定义基本使用的类型

type Selector = string;

type TypeOrArray = T | T[];

type htmlString = string;

}

// 定义 jQuery 接口,jquery 是一个 包含 Element 的集合

interface JQuery extends Iterable {

length: number;

eq(index: number): this;

// 重载

add(selector: JQuery.Selector, context: Element): this;

add(selector: JQuery.Selector | JQuery.TypeOrArray | JQuery.htmlString | JQuery): this;

children(selector?: JQuery.Selector): this;

css(propertyName: string): string;

html(): string;

}

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值