TypeScript
文章平均质量分 64
黄药师-掌风
踏踏实实做人,真真正正做事,能力决定我的一切,无论走到哪里认清自己最重要,虽然我笨,但是我够勤奋,乐观开朗,积极向上,
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TypeScript基础入门之高级类型的索引类型(Index types)
转发 TypeScript基础入门之高级类型的索引类型(Index types)高级类型索引类型(Index types)使用索引类型,编译器就能够检查使用了动态属性名的代码。 例如,一个常见的JavaScript模式是从对象中选取属性的子集。function pluck(o, names) { return names.map(n => o[n]);}下面是...转载 2018-09-23 22:21:43 · 5978 阅读 · 0 评论 -
TypeScript基础入门之高级类型的多态的 this类型
转发 TypeScript基础入门之高级类型的多态的 this类型高级类型多态的this类型多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的继承,比如。 在下面的例子里,在每个操作之后都返回this类型:class Query { public whereCon: Array<string> =...转载 2018-09-22 15:04:24 · 871 阅读 · 0 评论 -
TypeScript基础入门之命名空间(一)
转载 TypeScript基础入门之命名空间(一)命名空间关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与 ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。介绍这篇文章描...转载 2018-10-05 22:44:46 · 353 阅读 · 0 评论 -
TypeScript基础入门之Symbols
转发TypeScript基础入门之Symbols介绍自ECMAScript 2015起,symbol成为了一种新的原生类型,就像number和string一样。symbol类型的值是通过Symbol构造函数创建的。let sym1 = Symbol();let sym2 = Symbol("key"); // 可选的字符串keySymbols是不可改变且唯一的。let...转载 2018-09-28 09:47:20 · 381 阅读 · 0 评论 -
TypeScript基础入门之迭代器和生成器
转发 TypeScript基础入门之迭代器和生成器迭代性如果对象具有Symbol.iterator属性的实现,则该对象被视为可迭代。一些内置类型,如Array,Map,Set,String,Int32Array,Uint32Array等,已经实现了Symbol.iterator属性。对象上的Symbol.iterator函数负责返回值列表以进行迭代。for..of语句for.....转载 2018-09-28 13:28:38 · 766 阅读 · 0 评论 -
TypeScript基础入门之命名空间(二)
转载 TypeScript基础入门之命名空间(二)继续上篇文章[TypeScript基础入门之命名空间(一)]跨文件拆分当应用变得越来越大时,我们需要将代码分离到不同的文件中以便于维护。多文件名称空间现在,我们把Validation命名空间分割成多个文件。 尽管是不同的文件,它们仍是同一个命名空间,并且在使用的时候就如同它们在一个文件中定义的一样。 因为不同文件之间存在依赖关系...转载 2018-10-06 23:25:13 · 269 阅读 · 0 评论 -
TypeScript基础入门之模块解析(二)
转发 TypeScript基础入门之模块解析(二)模块解析Base URL使用baseUrl是使用AMD模块加载器的应用程序中的常见做法,其中模块在运行时"deployed"到单个文件夹。这些模块的源代码可以存在于不同的目录中,但构建脚本会将它们放在一起。设置baseUrl通知编译器在哪里可以找到模块。假定所有具有非相对名称的模块导入都相对于baseUrlbaseUrl的值...转载 2018-10-13 23:25:07 · 841 阅读 · 0 评论 -
TypeScript基础入门之命名空间(三)
转载 TypeScript基础入门之命名空间(三)继续上篇文章[TypeScript基础入门之命名空间(二)]别名另一种可以简化名称空间使用方法的方法是使用import q = x.y.z为常用对象创建较短的名称。不要与用于加载模块的import x = require("name")语法相混淆,此语法只是为指定的符号创建别名。您可以将这些类型的导入(通常称为别名)用于任何类型的标...转载 2018-10-07 21:17:05 · 350 阅读 · 0 评论 -
nginx + express 代理配置
转发 nginx + express 代理配置在node项目中,经常会有遇到需要获取访问URL地址的时候,同时也会遇到协议的问题,有时候,当我们的网站是https的时候,也希望在express中或者其他的node框架中获取到的URL地址协议也是https。但是奇怪的是express通过req.protocol获取到的仍然是http,经过试验通过nginx的配合能够很好的解决此方案。示例如...转载 2018-10-14 22:14:53 · 2541 阅读 · 0 评论 -
TypeScript基础入门之模块解析(三)
转发 TypeScript基础入门之模块解析(三)继续上文[TypeScript基础入门之模块解析(二)]跟踪模块解析如前所述,编译器可以在解析模块时访问当前文件夹之外的文件。在诊断模块未解析的原因或解析为错误定义时,这可能很难。使用--traceResolution启用编译器模块分辨率跟踪可以深入了解模块解析过程中发生的情况。假设我们有一个使用typescript模块的示例应...转载 2018-10-15 14:45:06 · 450 阅读 · 0 评论 -
TypeScript基础入门之模块(五)
转载 TypeScript基础入门之模块(五)构建模块的指南导出尽可能接近顶级使用您导出的东西时,模块的消费者应尽可能少地摩擦。添加太多级别的嵌套往往很麻烦,因此请仔细考虑如何构建事物。从模块导出命名空间是添加太多嵌套层的示例。虽然名称空间有时会有用,但在使用模块时会增加额外的间接级别。这很快就会成为用户的痛点,而且通常是不必要的。导出类上的静态方法也有类似的问题 - 类...转载 2018-10-05 06:39:02 · 581 阅读 · 0 评论 -
TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)
转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)高级类型可辨识联合(Discriminated Unions)你可以合并单例类型,联合类型,类型保护和类型别名来创建一个叫做 可辨识联合的高级模式,它也称做 标签联合或 代数数据类型。 可辨识联合在函数式编程很有用处。 一些语言会自动地为你辨识联合;而TypeScript则基于已有的Ja...转载 2018-09-21 09:45:24 · 2065 阅读 · 0 评论 -
TypeScript基础入门之模块(四)
转发 TypeScript基础入门之模块(四)使用其他JavaScript库要描述不是用TypeScript编写的库的形状,我们需要声明库公开的API。我们称之为未定义实现"环境"的声明。通常,这些是在.d.ts文件中定义的。如果您熟悉C/C++,可以将它们视为.h文件。我们来看几个例子。外部模块在Node.js中,大多数任务是通过加载一个或多个模块来完成的。我们可以使用...转载 2018-10-03 07:38:49 · 317 阅读 · 0 评论 -
TypeScript基础入门之高级类型的交叉类型和联合类型
转发TypeScript基础入门之高级类型的交叉类型和联合类型项目实践仓库https://github.com/durban89/typescript_demo.gittag: 1.4.2为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。npm install -D ts-node后面自己在练习的时候可以这样使用npx...转载 2018-09-14 06:54:46 · 3967 阅读 · 0 评论 -
TypeScript基础入门之高级类型的映射类型
转发 TypeScript基础入门之高级类型的映射类型高级类型映射类型一个常见的任务是将一个已知的类型每个属性都变为可选的:interface PersonPartial { name?: string; age?: number;}或者我们想要一个只读版本:interface PersonReadonly { readonly name: s...转载 2018-09-24 20:38:10 · 1201 阅读 · 0 评论 -
TypeScript基础入门之高级类型的类型别名
转发TypeScript基础入门之高级类型的类型别名高级类型类型别名类型别名会给一个类型起个新名字。 类型别名有时和接口很像,但是可以作用于原始值,联合类型,元组以及其它任何你需要手写的类型。type Name = string;type NameFunc = () => string;type NameOrFunc = Name | NameFunc;funct...转载 2018-09-19 15:32:54 · 2412 阅读 · 0 评论 -
TypeScript基础入门之高级类型的字符串字面量类型
转发TypeScript基础入门之高级类型的字符串字面量类型 高级类型字符串字面量类型字符串字面量类型允许你指定字符串必须的固定值。 在实际应用中,字符串字面量类型可以与联合类型,类型保护和类型别名很好的配合。 通过结合使用这些特性,你可以实现类似枚举类型的字符串。type Easing = "ease-in" | "ease-out" | "ease-in-out";...转载 2018-09-20 09:58:33 · 512 阅读 · 0 评论 -
TypeScript基础入门之高级类型的类型保护与区分类型
转发 TypeScript基础入门之高级类型的类型保护与区分类型 项目实践仓库https://github.com/durban89/typescript_demo.gittag: 1.4.3为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。npm install -D ts-node后面自己在练习的时候可以这样使用...转载 2018-09-15 07:21:11 · 1409 阅读 · 0 评论 -
TypeScript项目引用(project references)
转发 TypeScript项目引用(project references)TypeScript新特性之项目引用(project references)项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。通过这样做,您可以大大缩短构建时间,实现组件之间的逻辑分离,并以新的更好的方式组织代码。我们还为tsc引入了一种新模式,即--b...转载 2018-09-25 22:18:48 · 5562 阅读 · 0 评论 -
TypeScript基础入门之模块(二)
转载 TypeScript基础入门之模块(二)生成模块代码根据编译期间指定的模块目标,编译器将为Node.js(CommonJS),require.js(AMD),UMD,SystemJS或ECMAScript 2015本机模块(ES6)模块加载系统生成适当的代码。有关生成的代码中的define, require 和 register调用的更多信息,请参阅每个模块加载器的文档。下面这...转载 2018-10-02 09:05:35 · 278 阅读 · 0 评论 -
Express + TypeScript开发微信应用
转载 Express + TypeScript开发微信应用在进行微信开发之前,首先需要注册一个微信公众号或者是订阅号,这个是最基本的操作,没有这一步,后面的的步伐很难走。注册完微信之后,获取appId和appSecret,有了这两个就可以了第一步、创建项目$ mkdir ts_node_wx$ cd ts_node_wx && npm init 第二步、安装依...转载 2018-10-11 09:10:51 · 755 阅读 · 0 评论 -
TypeScript基础入门之模块(三)
转载 TypeScript基础入门之模块(三)可选模块加载和其他高级加载方案在某些情况下,您可能只想在某些条件下加载模块。在TypeScript中,我们可以使用下面显示的模式来实现此模式和其他高级加载方案,以直接调用模块加载器而不会丢失类型安全性。编译器检测是否生成的JavaScript中使用了每个模块。如果模块标识符仅用作类型注释的一部分而从不用作表达式,则不会为该模块生成requi...转载 2018-10-02 23:19:52 · 334 阅读 · 0 评论 -
TypeScript基础入门之命名空间和模块
转载TypeScript基础入门之命名空间和模块命名空间和模块关于术语的说明:值得注意的是,在TypeScript 1.5中,命名法已经改变。"内部模块"现在是"命名空间"。"外部模块"现在只是"模块",以便与ECMAScript 2015的术语保持一致(即module X {相当于现在首选的namespace X {)。介绍本文概述了使用TypeScript中的命名空间和模块...转载 2018-10-08 22:43:09 · 1061 阅读 · 0 评论 -
TypeScript基础入门之声明合并(三)
转发 TypeScript基础入门之声明合并(三)声明合并将命名空间与类,函数和枚举合并命名空间足够灵活,也可以与其他类型的声明合并。为此,命名空间声明必须遵循它将与之合并的声明。生成的声明具有两种声明类型的属性。TypeScript使用此功能来模拟JavaScript以及其他编程语言中的某些模式。将命名空间与类合并这为用户提供了一种描述内部类的方法。class A...转载 2018-10-18 20:31:59 · 1804 阅读 · 0 评论 -
TypeScript基础入门之Mixins
转载 TypeScript基础入门之Mixins介绍与传统的OO层次结构一起,另一种从可重用组件构建类的流行方法是通过组合更简单的部分类来构建它们。您可能熟悉Scala等语言的mixin或traits的概念,并且该模式在JavaScript社区中也已经普及。Mixin示例在下面的代码中,我们将展示如何在TypeScript中对mixin进行建模。在代码之后,我们将分解其工作原理...转载 2018-10-24 22:53:00 · 740 阅读 · 0 评论 -
TypeScript基础入门之Javascript文件类型检查(二)
转发 TypeScript基础入门之Javascript文件类型检查(二)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(一)】对象文字是开放式的在.ts文件中,初始化变量声明的对象文字将其类型赋予声明。不能添加未在原始文本中指定的新成员。此规则在.js文件中放宽;对象文字具有开放式类型(索引签名),允许添加和查找最初未定义的属性。例如:var ob...转载 2018-10-30 10:39:21 · 459 阅读 · 0 评论 -
TypeScript基础入门之Javascript文件类型检查(五)
转发 TypeScript基础入门之Javascript文件类型检查(五)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(四)】@constructor编译器根据此属性赋值推断构造函数,但如果添加@constructor标记,则可以更好地检查更严格和更好的建议:/** * @constructor * @param {number} data ...转载 2018-11-01 14:33:43 · 286 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(三)
转载 如何创建高质量的TypeScript声明文件(三)继续上篇文章[如何创建高质量的TypeScript声明文件(二)]模块插件或UMD插件模块插件更改另一个模块(UMD或模块)的形状。 例如,在Moment.js中,时刻范围为时刻对象添加了一个新的范围方法。出于编写声明文件的目的,无论要更改的模块是普通模块还是UMD模块,您都将编写相同的代码。模板使用module-pl...转载 2018-11-06 14:05:46 · 307 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(五) - 示例
转发 如何创建高质量的TypeScript声明文件(五) - 示例前面四篇文章一起介绍了在声明文件中关于库结构的一些介绍,本篇文章之后分享一些API的文档,还有它们的使用示例,并且阐述如何为他们创建声明文件这些示例以大致递增的复杂度顺序排序。全局变量 全局函数 具有属性的对象 重载函数 可重用类型(接口) 可重用类型(类型别名) 组织类型 类示例全局变量文档...转载 2018-11-09 10:27:36 · 432 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(一)
转载 如何创建高质量的TypeScript声明文件(一)库结构“库结构”可帮助您了解常用库格式以及如何为每种格式编写正确的声明文件。 如果您正在编辑现有文件,则可能不需要阅读这篇文章。 新声明文件的作者必须阅读本篇文章以正确理解库的格式如何影响声明文件的写入。介绍从广义上讲,构造声明文件的方式取决于库的使用方式。 有许多方法可以在JavaScript中提供供消费的库,你需要编写你的...转载 2018-11-04 22:12:04 · 786 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(四)
转发 如何创建高质量的TypeScript声明文件(四)继续上篇文章[如何创建高质量的TypeScript声明文件(三)]对UMD库的依赖性来自全局库如果您的全局库依赖于UMD模块,请使用/// <reference types指令:/// <reference types="moment" />function getThing(): moment;...转载 2018-11-07 09:34:28 · 436 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(二)
转载 如何创建高质量的TypeScript声明文件(二)继续上篇文章[如何创建高质量的TypeScript声明文件(一)]模块化库有些库只能在模块加载器环境中工作。 例如,因为express仅适用于Node.js,必须使用CommonJS require函数加载。ECMAScript 2015(也称为ES2015,ECMAScript 6和ES6),CommonJS和Require...转载 2018-11-05 15:40:45 · 363 阅读 · 0 评论 -
如何创建高质量的TypeScript声明文件(六) - 示例
转载 如何创建高质量的TypeScript声明文件(六) - 示例继续上篇文章【如何创建高质量的TypeScript声明文件(五) - 示例】 上篇文章介绍了全局变量 全局函数 具有属性的对象 重载函数 可重用类型(接口)几种示例下面继续分享剩余的几种示例可重用类型(类型别名) 组织类型 类可重用类型(类型别名)文档在需要问候语的任何地方,您可以提供字符串,...转载 2018-11-11 15:23:15 · 339 阅读 · 0 评论 -
TypeScript基础入门之Javascript文件类型检查(一)
转载 TypeScript基础入门之Javascript文件类型检查(一)TypeScript 2.3及更高版本支持使用--checkJs在.js文件中进行类型检查和报告错误。您可以通过添加//@ts-nocheck注释来跳过检查某些文件; 相反,您可以通过在不设置--checkJs的情况下向其添加//@ts-check注释来选择仅检查几个.js文件。 您还可以通过在前一行添加//@ts-...转载 2018-10-26 22:08:16 · 1037 阅读 · 0 评论 -
TypeScript基础入门之Javascript文件类型检查(三)
转发 TypeScript基础入门之Javascript文件类型检查(三)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(二)】支持JSDoc下面的列表概述了使用JSDoc注释在JavaScript文件中提供类型信息时当前支持的构造。请注意,尚不支持下面未明确列出的任何标记(例如@async)。@type @param (or @arg or @...转载 2018-10-31 09:48:19 · 291 阅读 · 0 评论 -
TypeScript基础入门之装饰器(三)
转载 TypeScript基础入门之装饰器(三)继续上篇文章[TypeScript基础入门之装饰器(二)]访问器装饰器Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用于观察,修改或替换访问者的定义。 访问器装饰器不能在声明文件中使用,也不能在任何其他环境上下文中使用(例如在声明类中)。注意: TypeScript不允许为单个成...转载 2018-10-23 23:02:51 · 843 阅读 · 0 评论 -
TypeScript基础入门之模块(一)
转发 TypeScript基础入门之模块(一)模块关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 "内部模块"现在称做"命名空间"。 "外部模块"现在则简称为"模块",这是为了与 ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。介绍从ECMAScr...转载 2018-09-30 13:21:42 · 254 阅读 · 0 评论 -
TypeScript基础入门之模块解析(一)
转载 TypeScript基础入门之模块解析(一)模块解析本节假设有关模块的一些基本知识。有关更多信息,请参阅模块文档。模块解析是编译器用来确定导入所引用内容的过程。考虑一个导入语句,如import { a } from "moduleA";为了检查a的任何使用,编译器需要确切地知道它代表什么,并且需要检查它的定义moduleA。此时,编译器将询问"moduleA的类型是什...转载 2018-10-09 21:34:44 · 776 阅读 · 0 评论 -
TypeScript基础入门之声明合并(一)
转发 TypeScript基础入门之声明合并(一)声明合并介绍TypeScript中的一些独特概念描述了类型级别的JavaScript对象的形状。TypeScript特别独特的一个例子是"声明合并"的概念。在使用现有JavaScript时,理解此概念将为您提供优势。它还为更高级的抽象概念打开了大门。出于本文的目的,"声明合并"意味着编译器将使用相同名称声明的两个单独声明合并到...转载 2018-10-16 22:17:43 · 2238 阅读 · 0 评论 -
TypeScript基础入门之JSX(一)
转发 TypeScript基础入门之JSX(一)介绍JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了其他实现。 TypeScript支持嵌入,类型检查和直接编译JSX到JavaScript。基本用法要使用JSX,您必须做两件事。 1. 使用.tsx扩展名命名您的文件...转载 2018-10-19 21:20:28 · 4442 阅读 · 0 评论
分享