- 博客(121)
- 资源 (11)
- 收藏
- 关注
转载 如何创建高质量的TypeScript声明文件(七) - 该做什么和不该做什么
转载 如何创建高质量的TypeScript声明文件(七) - 该做什么和不该做什么该做什么和不该做什么一般类型数字,字符串,布尔值和对象不要使用Number,String,Boolean或Object类型。 这些类型指的是在JavaScript代码中几乎从不正确使用的非原始盒装对象。/* WRONG */function reverse(s: String): String...
2018-11-14 09:02:15
373
转载 如何创建高质量的TypeScript声明文件(六) - 示例
转载 如何创建高质量的TypeScript声明文件(六) - 示例继续上篇文章【如何创建高质量的TypeScript声明文件(五) - 示例】 上篇文章介绍了全局变量 全局函数 具有属性的对象 重载函数 可重用类型(接口)几种示例下面继续分享剩余的几种示例可重用类型(类型别名) 组织类型 类可重用类型(类型别名)文档在需要问候语的任何地方,您可以提供字符串,...
2018-11-11 15:23:15
268
转载 如何创建高质量的TypeScript声明文件(五) - 示例
转发 如何创建高质量的TypeScript声明文件(五) - 示例前面四篇文章一起介绍了在声明文件中关于库结构的一些介绍,本篇文章之后分享一些API的文档,还有它们的使用示例,并且阐述如何为他们创建声明文件这些示例以大致递增的复杂度顺序排序。全局变量 全局函数 具有属性的对象 重载函数 可重用类型(接口) 可重用类型(类型别名) 组织类型 类示例全局变量文档...
2018-11-09 10:27:36
365
转载 如何创建高质量的TypeScript声明文件(四)
转发 如何创建高质量的TypeScript声明文件(四)继续上篇文章[如何创建高质量的TypeScript声明文件(三)]对UMD库的依赖性来自全局库如果您的全局库依赖于UMD模块,请使用/// <reference types指令:/// <reference types="moment" />function getThing(): moment;...
2018-11-07 09:34:28
364
转载 如何创建高质量的TypeScript声明文件(三)
转载 如何创建高质量的TypeScript声明文件(三)继续上篇文章[如何创建高质量的TypeScript声明文件(二)]模块插件或UMD插件模块插件更改另一个模块(UMD或模块)的形状。 例如,在Moment.js中,时刻范围为时刻对象添加了一个新的范围方法。出于编写声明文件的目的,无论要更改的模块是普通模块还是UMD模块,您都将编写相同的代码。模板使用module-pl...
2018-11-06 14:05:46
256
转载 如何创建高质量的TypeScript声明文件(二)
转载 如何创建高质量的TypeScript声明文件(二)继续上篇文章[如何创建高质量的TypeScript声明文件(一)]模块化库有些库只能在模块加载器环境中工作。 例如,因为express仅适用于Node.js,必须使用CommonJS require函数加载。ECMAScript 2015(也称为ES2015,ECMAScript 6和ES6),CommonJS和Require...
2018-11-05 15:40:45
312
转载 如何创建高质量的TypeScript声明文件(一)
转载 如何创建高质量的TypeScript声明文件(一)库结构“库结构”可帮助您了解常用库格式以及如何为每种格式编写正确的声明文件。 如果您正在编辑现有文件,则可能不需要阅读这篇文章。 新声明文件的作者必须阅读本篇文章以正确理解库的格式如何影响声明文件的写入。介绍从广义上讲,构造声明文件的方式取决于库的使用方式。 有许多方法可以在JavaScript中提供供消费的库,你需要编写你的...
2018-11-04 22:12:04
723
转载 TypeScript基础入门之Javascript文件类型检查(五)
转发 TypeScript基础入门之Javascript文件类型检查(五)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(四)】@constructor编译器根据此属性赋值推断构造函数,但如果添加@constructor标记,则可以更好地检查更严格和更好的建议:/** * @constructor * @param {number} data ...
2018-11-01 14:33:43
226
转载 TypeScript基础入门之Javascript文件类型检查(三)
转发 TypeScript基础入门之Javascript文件类型检查(三)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(二)】支持JSDoc下面的列表概述了使用JSDoc注释在JavaScript文件中提供类型信息时当前支持的构造。请注意,尚不支持下面未明确列出的任何标记(例如@async)。@type @param (or @arg or @...
2018-10-31 09:48:19
232
转载 TypeScript基础入门之Javascript文件类型检查(二)
转发 TypeScript基础入门之Javascript文件类型检查(二)继续上篇文章【TypeScript基础入门之Javascript文件类型检查(一)】对象文字是开放式的在.ts文件中,初始化变量声明的对象文字将其类型赋予声明。不能添加未在原始文本中指定的新成员。此规则在.js文件中放宽;对象文字具有开放式类型(索引签名),允许添加和查找最初未定义的属性。例如:var ob...
2018-10-30 10:39:21
392
转载 TypeScript基础入门之Javascript文件类型检查(一)
转载 TypeScript基础入门之Javascript文件类型检查(一)TypeScript 2.3及更高版本支持使用--checkJs在.js文件中进行类型检查和报告错误。您可以通过添加//@ts-nocheck注释来跳过检查某些文件; 相反,您可以通过在不设置--checkJs的情况下向其添加//@ts-check注释来选择仅检查几个.js文件。 您还可以通过在前一行添加//@ts-...
2018-10-26 22:08:16
973
转载 TypeScript基础入门之三重斜线指令
转载 TypeScript基础入门之三重斜线指令三斜杠指令是包含单个XML标记的单行注释。 注释的内容用作编译器指令。三斜杠指令仅在其包含文件的顶部有效。 三重斜杠指令只能在单行或多行注释之前,包括其他三重斜杠指令。 如果在声明或声明之后遇到它们,则将它们视为常规单行注释,并且没有特殊含义。/// <reference path ="..."/>/// <refe...
2018-10-25 22:41:36
978
转载 TypeScript基础入门之Mixins
转载 TypeScript基础入门之Mixins介绍与传统的OO层次结构一起,另一种从可重用组件构建类的流行方法是通过组合更简单的部分类来构建它们。您可能熟悉Scala等语言的mixin或traits的概念,并且该模式在JavaScript社区中也已经普及。Mixin示例在下面的代码中,我们将展示如何在TypeScript中对mixin进行建模。在代码之后,我们将分解其工作原理...
2018-10-24 22:53:00
662
转载 TypeScript基础入门之装饰器(三)
转载 TypeScript基础入门之装饰器(三)继续上篇文章[TypeScript基础入门之装饰器(二)]访问器装饰器Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用于观察,修改或替换访问者的定义。 访问器装饰器不能在声明文件中使用,也不能在任何其他环境上下文中使用(例如在声明类中)。注意: TypeScript不允许为单个成...
2018-10-23 23:02:51
739
转载 TypeScript基础入门之装饰器(二)
转发 TypeScript基础入门之装饰器(二)装饰器求值如何应用装饰器应用于类内的各种声明的顺序:1. 对每个实例成员应用参数装饰器,后跟Method,Accessor或Property Decorators。2. 对每个静态成员应用参数装饰器,后跟Method,Accessor或Property Decorators。3. 参数装饰器应用于构造函数。4. 类装饰器适用于该类。...
2018-10-22 22:00:48
384
转载 TypeScript基础入门之装饰器(一)
转发 TypeScript基础入门之装饰器(一)介绍随着TypeScript和ES6中Classes的引入,现在存在某些场景需要额外的功能来支持注释或修改类和类成员。装饰器提供了一种为类声明和成员添加注释和元编程语法的方法。装饰器是JavaScript的第2阶段提案,可作为TypeScript的实验性功能使用。注意: 装饰器是一种实验性功能,可能在将来的版本中发生变化。要为...
2018-10-21 22:49:06
801
转载 TypeScript基础入门之JSX(二)
转发 TypeScript基础入门之JSX(二)属性类型检查键入检查属性的第一步是确定元素属性类型。内在元素和基于价值的元素之间略有不同。对于内部元素,它是JSX.IntrinsicElements上的属性类型declare namespace JSX { interface IntrinsicElements { foo: { bar?: boolean } ...
2018-10-20 22:18:00
3122
转载 TypeScript基础入门之JSX(一)
转发 TypeScript基础入门之JSX(一)介绍JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了其他实现。 TypeScript支持嵌入,类型检查和直接编译JSX到JavaScript。基本用法要使用JSX,您必须做两件事。 1. 使用.tsx扩展名命名您的文件...
2018-10-19 21:20:28
4340
转载 TypeScript基础入门之声明合并(三)
转发 TypeScript基础入门之声明合并(三)声明合并将命名空间与类,函数和枚举合并命名空间足够灵活,也可以与其他类型的声明合并。为此,命名空间声明必须遵循它将与之合并的声明。生成的声明具有两种声明类型的属性。TypeScript使用此功能来模拟JavaScript以及其他编程语言中的某些模式。将命名空间与类合并这为用户提供了一种描述内部类的方法。class A...
2018-10-18 20:31:59
1637
转载 TypeScript基础入门之声明合并(二)
转发TypeScript基础入门之声明合并(二)声明合并合并命名空间与接口类似,同名的命名空间也将合并其成员。由于名称空间同时创建了名称空间和值,因此我们需要了解它们是如何合并的。要合并命名空间,每个命名空间中声明的导出接口的类型定义本身已合并,形成一个内部具有合并接口定义的命名空间。要合并命名空间值,在每个声明站点,如果已存在具有给定名称的命名空间,则通过获取现有命名空间并...
2018-10-17 15:14:09
215
转载 TypeScript基础入门之声明合并(一)
转发 TypeScript基础入门之声明合并(一)声明合并介绍TypeScript中的一些独特概念描述了类型级别的JavaScript对象的形状。TypeScript特别独特的一个例子是"声明合并"的概念。在使用现有JavaScript时,理解此概念将为您提供优势。它还为更高级的抽象概念打开了大门。出于本文的目的,"声明合并"意味着编译器将使用相同名称声明的两个单独声明合并到...
2018-10-16 22:17:43
2157
转载 TypeScript基础入门之模块解析(三)
转发 TypeScript基础入门之模块解析(三)继续上文[TypeScript基础入门之模块解析(二)]跟踪模块解析如前所述,编译器可以在解析模块时访问当前文件夹之外的文件。在诊断模块未解析的原因或解析为错误定义时,这可能很难。使用--traceResolution启用编译器模块分辨率跟踪可以深入了解模块解析过程中发生的情况。假设我们有一个使用typescript模块的示例应...
2018-10-15 14:45:06
343
转载 nginx + express 代理配置
转发 nginx + express 代理配置在node项目中,经常会有遇到需要获取访问URL地址的时候,同时也会遇到协议的问题,有时候,当我们的网站是https的时候,也希望在express中或者其他的node框架中获取到的URL地址协议也是https。但是奇怪的是express通过req.protocol获取到的仍然是http,经过试验通过nginx的配合能够很好的解决此方案。示例如...
2018-10-14 22:14:53
2463
转载 TypeScript基础入门之模块解析(二)
转发 TypeScript基础入门之模块解析(二)模块解析Base URL使用baseUrl是使用AMD模块加载器的应用程序中的常见做法,其中模块在运行时"deployed"到单个文件夹。这些模块的源代码可以存在于不同的目录中,但构建脚本会将它们放在一起。设置baseUrl通知编译器在哪里可以找到模块。假定所有具有非相对名称的模块导入都相对于baseUrlbaseUrl的值...
2018-10-13 23:25:07
688
转载 Express + TypeScript开发微信应用
转载 Express + TypeScript开发微信应用在进行微信开发之前,首先需要注册一个微信公众号或者是订阅号,这个是最基本的操作,没有这一步,后面的的步伐很难走。注册完微信之后,获取appId和appSecret,有了这两个就可以了第一步、创建项目$ mkdir ts_node_wx$ cd ts_node_wx && npm init 第二步、安装依...
2018-10-11 09:10:51
689
转载 TypeScript基础入门之模块解析(一)
转载 TypeScript基础入门之模块解析(一)模块解析本节假设有关模块的一些基本知识。有关更多信息,请参阅模块文档。模块解析是编译器用来确定导入所引用内容的过程。考虑一个导入语句,如import { a } from "moduleA";为了检查a的任何使用,编译器需要确切地知道它代表什么,并且需要检查它的定义moduleA。此时,编译器将询问"moduleA的类型是什...
2018-10-09 21:34:44
620
转载 TypeScript基础入门之命名空间和模块
转载TypeScript基础入门之命名空间和模块命名空间和模块关于术语的说明:值得注意的是,在TypeScript 1.5中,命名法已经改变。"内部模块"现在是"命名空间"。"外部模块"现在只是"模块",以便与ECMAScript 2015的术语保持一致(即module X {相当于现在首选的namespace X {)。介绍本文概述了使用TypeScript中的命名空间和模块...
2018-10-08 22:43:09
965
转载 TypeScript基础入门之命名空间(三)
转载 TypeScript基础入门之命名空间(三)继续上篇文章[TypeScript基础入门之命名空间(二)]别名另一种可以简化名称空间使用方法的方法是使用import q = x.y.z为常用对象创建较短的名称。不要与用于加载模块的import x = require("name")语法相混淆,此语法只是为指定的符号创建别名。您可以将这些类型的导入(通常称为别名)用于任何类型的标...
2018-10-07 21:17:05
288
转载 TypeScript基础入门之命名空间(二)
转载 TypeScript基础入门之命名空间(二)继续上篇文章[TypeScript基础入门之命名空间(一)]跨文件拆分当应用变得越来越大时,我们需要将代码分离到不同的文件中以便于维护。多文件名称空间现在,我们把Validation命名空间分割成多个文件。 尽管是不同的文件,它们仍是同一个命名空间,并且在使用的时候就如同它们在一个文件中定义的一样。 因为不同文件之间存在依赖关系...
2018-10-06 23:25:13
229
转载 TypeScript基础入门之命名空间(一)
转载 TypeScript基础入门之命名空间(一)命名空间关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与 ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。介绍这篇文章描...
2018-10-05 22:44:46
310
转载 TypeScript基础入门之模块(五)
转载 TypeScript基础入门之模块(五)构建模块的指南导出尽可能接近顶级使用您导出的东西时,模块的消费者应尽可能少地摩擦。添加太多级别的嵌套往往很麻烦,因此请仔细考虑如何构建事物。从模块导出命名空间是添加太多嵌套层的示例。虽然名称空间有时会有用,但在使用模块时会增加额外的间接级别。这很快就会成为用户的痛点,而且通常是不必要的。导出类上的静态方法也有类似的问题 - 类...
2018-10-05 06:39:02
519
转载 TypeScript基础入门之模块(四)
转发 TypeScript基础入门之模块(四)使用其他JavaScript库要描述不是用TypeScript编写的库的形状,我们需要声明库公开的API。我们称之为未定义实现"环境"的声明。通常,这些是在.d.ts文件中定义的。如果您熟悉C/C++,可以将它们视为.h文件。我们来看几个例子。外部模块在Node.js中,大多数任务是通过加载一个或多个模块来完成的。我们可以使用...
2018-10-03 07:38:49
238
转载 TypeScript基础入门之模块(三)
转载 TypeScript基础入门之模块(三)可选模块加载和其他高级加载方案在某些情况下,您可能只想在某些条件下加载模块。在TypeScript中,我们可以使用下面显示的模式来实现此模式和其他高级加载方案,以直接调用模块加载器而不会丢失类型安全性。编译器检测是否生成的JavaScript中使用了每个模块。如果模块标识符仅用作类型注释的一部分而从不用作表达式,则不会为该模块生成requi...
2018-10-02 23:19:52
254
转载 TypeScript基础入门之模块(二)
转载 TypeScript基础入门之模块(二)生成模块代码根据编译期间指定的模块目标,编译器将为Node.js(CommonJS),require.js(AMD),UMD,SystemJS或ECMAScript 2015本机模块(ES6)模块加载系统生成适当的代码。有关生成的代码中的define, require 和 register调用的更多信息,请参阅每个模块加载器的文档。下面这...
2018-10-02 09:05:35
228
转载 TypeScript基础入门之模块(一)
转发 TypeScript基础入门之模块(一)模块关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 "内部模块"现在称做"命名空间"。 "外部模块"现在则简称为"模块",这是为了与 ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。介绍从ECMAScr...
2018-09-30 13:21:42
201
转载 TypeScript基础入门之迭代器和生成器
转发 TypeScript基础入门之迭代器和生成器迭代性如果对象具有Symbol.iterator属性的实现,则该对象被视为可迭代。一些内置类型,如Array,Map,Set,String,Int32Array,Uint32Array等,已经实现了Symbol.iterator属性。对象上的Symbol.iterator函数负责返回值列表以进行迭代。for..of语句for.....
2018-09-28 13:28:38
715
转载 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
309
转载 TypeScript项目引用(project references)
转发 TypeScript项目引用(project references)TypeScript新特性之项目引用(project references)项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。通过这样做,您可以大大缩短构建时间,实现组件之间的逻辑分离,并以新的更好的方式组织代码。我们还为tsc引入了一种新模式,即--b...
2018-09-25 22:18:48
5345
转载 TypeScript基础入门之高级类型的映射类型
转发 TypeScript基础入门之高级类型的映射类型高级类型映射类型一个常见的任务是将一个已知的类型每个属性都变为可选的:interface PersonPartial { name?: string; age?: number;}或者我们想要一个只读版本:interface PersonReadonly { readonly name: s...
2018-09-24 20:38:10
1133
转载 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
5864
SEO工具-SEO工具
2011-07-06
CSS工具-CSS工具
2011-07-06
网站检测工具10款-网站检测工具10款
2011-07-06
centos安装imagemagick
2011-07-05
ubuntu 扩展库的安装
2011-07-05
nginx0.8.33
2011-07-05
rhel5安装gcc c++
2011-07-05
rhel5_apache安装
2011-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人