Some functions may have different return types depending on the types of the arguments with which they’re invoked. Using TypeScript’s function overloads, you can create an overload for each allowed combination of parameter and return types. This way,…
Conditional types take generics one step further and allow you to test for a specific condition, based on which the final type will be determined. We will look at how they work on a basic level and then leverage their power to allocate function types…
type DigitValidator = (char) => boolean; -]{}/.test(char); export const digitValidators: {[key: string]: DigitValidator} = { ': numericValidator }; We can use 'type' keyword to define a function type. 'digitValidators', is a mapping object, return a…
If Typescript is the first language in which you've encountered generics, the concept can be quite difficult to understand. We skip the lecture in this lesson and dive straight into a real-world use-case that is guaranteed to help you understand the…
Lookup types, introduced in TypeScript 2.1, allow us to dynamically create types based on the property keys of an object. We'll use the function spyOn from Jest to illustrate how lookup types can type-safe function parameters. Considering this code:…
前言 在第一篇中,我们简单介绍了TypeScript的一些简单语法,那么如果我们只是简单使用TypeScript开发一个web项目,应该做哪些准备?接下来我们就结合TypeScript和Webpack来创建一个基于TypeScript的Web应用程序. 准备工作 为了创建第一个Web应用,我们先做一些基本的准备工作,需要安装以下依赖: webpack webpack-cli webpack-dev-server webpack-merge html-webpack-plugin clean-we…
该文章用于督促自己学习TypeScript,作为学笔记进行保存,如果有错误的地方欢迎指正 2019-03-27  16:50:03 一.什么是TypeScript? TypeScript是javascript的超集,在ts中可以使用所有的js代码,并对js进行了扩展,包括类型效验,数据类型,接口等 如图所示,TypeScript包含了javascript并进行延伸 二.准备工作 在说TypeScript之前先说一下如何让ts编译为js代码 首先安装 typescrpt, npm install…
We usually think of types as something that can define a single layer of an object: with an interface we normally specify a list of a few properties and their respective types. If any one of those properties is another object we must refer again to i…
A literal type is a type that represents exactly one value, e.g. one specific string or number. You can combine literal types with union types to model a finite set of valid values for a variable. In this lesson, we explore the all kinds of literal t…
ypeScript 2.2 introduced the object, a type that represents any non-primitive type. It can be used to more accurately type methods such as Object.create. Don't confuse it with the Object type or {}, the empty object type, though! So one thing we need…
Typescript classes make traditional object oriented programming easier to read and write. In this lesson we learn about class syntax, what the constructor is and some interesting variable features. interface Opponent { health: number; alias: string;…
启动项目 Express 是一个nodejs框架,用于构建Web后端应用程序.它非常的灵活,你可以用你喜欢的方式去使用他.在这个系列文章里,记录了我使用typescript express去构建一个web api项目的方法. 首先我们需要使用NPM安装一些必要的包: npm init npm install typescript ts-node --D npm install express --save 接下来我们创建一个配置文件tscofig.json放置在根目录: { "compilerO…
To using decorate, we can modifiy tsconfig.json: { "compilerOptions": { ... "experimentalDecorators": true, ... } } So for example we want to build a '@LogMethod' decorator, which arroding to the system logging level to decide whether…
前言 江湖有传"动态类型一时爽,代码重构火葬场",由于动态类型语言在开发时不受数据类型的约束,因此非常适合在项目原型阶段和初期进行快速迭代开发使用,这意味着项目未来将通过重写而非重构的方式进入成熟阶段.而在企业级应用开发中,每个系统特性其实都是需求分析人员与用户进行多次调研后明确下来的,后期需要重写的可能性微乎其微,更多的是修修改改,在单元测试不足常态化的环境下静态类型的优势就尤为突出.而TypeScript的类型系统和编译时类型检查机制则非常适合用于构建企业级或不以重写实现迭代升级的…
前言 之前写个过一篇博客叫<浅谈boost.variant的几种访问方式>,里面讲到了可以通过访问者方式来获取variant的值,但是在重载函数operator()里面只能够获取variant的值,如果要捕获外部变量或调用外部函数比较麻烦,那么有没有一种方法来简化variant的访问呢?当然有,下面我们让variant支持lambda表达式访问(个人博客也发表了<让boost.variant支持lambda表达式访问>). 代码 #include <iostream>…
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript - 类 从C#到TypeScript - function 从C#到TypeScript - 装饰器 从C#到TypeScript - Promise 从C#到TypeScript - Generator 从C#到TypeScript - async await 从C#到TypeScript -…
TypeScript 是开源的,TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript.编译出来的 JavaScript 可以运行在任何浏览器上.TypeScript 编译工具可以运行在任何服务器和任何系统上 问题: 什么是超集 超集是集合论的术语说到超集,不得不说另一个,子集,怎么理解这两个概念呢,举个例子 如果一个集合A里面的的所有元素集合B里面都存在,那么我们可以理解集合A是集合B的子集,反之集合B为集合A的超集 现在我们就能理解为 Typesc…
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象的动态语言,有java的影子,有C的味道,中间有比其它语言多的糟粕,使用预处理办法可以解决这些问题.其中Less[les]与Sass是CSS的预处理技术,而CoffeeScript.TypeScript则是javascript的预处理技术. 一.Less 1.1.概要 Less是一种动态样式语言,L…
0x00 前言 在前几天的美国纽约,微软举行了Connect(); //2015大会.通过这次大会,我们可以很高兴的看到微软的确变得更加开放也更加务实了.当然,会上放出了不少新产品和新功能,其中就包括了VS Code的beta版本.而且微软更进一步,已经在github将VS Code的代码开源了.除了这些让人兴奋的消息,我们还应该注意到VS Code提供了对拓展的支持.所以本文就来聊一聊使用TypeScript开发VS Code拓展的话题吧. 本文所使用的拓展的应用商店页面: https://m…
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象的动态语言,有java的影子,有C的味道,中间有比其它语言多的糟粕,使用预处理办法可以解决这些问题.其中Less[les]与Sass是CSS的预处理技术,而CoffeeScript.TypeScript则是javascript的预处理技术. 一.Less 1.1.概要 Less是一种动态样式语言,L…
环境 windows 10 准备工具 Visual Studio Code Node.js Git 需求 必须支持IE8 步骤开始: 执行命令行工具 mkdir Demo && cd Demo npm init name: demo version:0.0.1 description:This is a demo. entry point:[Enter] test command:[Enter] git repository:[Enter] keywords:[Enter] author:…
全局安装typescript: npm install -g typescript 目前版本2.0.3,这个版本不再需要使用typings命令了.但是vscode捆绑的版本是1.8的,需要一些配置工作,看本文的处理办法.   测试tsc命令: tsc 创建要写的程序项目文件夹: mkdir test-typescript-spider 进入该文件夹: cd test-typescript-spider 初始化项目: npm init 安装superagent和cheerio模块: npm i -…
前言 最近项目很急,所以没有什么时间回答关于Xamarin.Android方面的问题,也有一段时间没有更新.主要是手头很缺人,如果有谁有兴趣加入我们的话,可以私聊我,这样我就能继续造福社区了,同时还有很多的好的库我也可以开源(兼容MvvmCross).下面就我学习TypeScript. 工具 大家可以使用VS2013/2015,VS2012可以安装对应的插件,我们直接新建(带TypeScript的HTML应用程序),并在app.ts中进行开发,如果读者想查看对应生成的js代码可以到项目目录下查看…
1.简介 TypeScript 是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程. TypeScript是一种Compile-to-JavaScript的语言 TypeScript扩展了JavaScript的句法,所以现有的JavaScript程序可以不加修改,直接在TypeScript下工作.同时,TypeScript编译产生JavaScript以确保兼容性. 2.特点&优势 2.1.兼容现有JS代码 2…
JavaScript中的模块 在学习TypeScript的模块之前我们先看看在JavaScript中的模块是如何实现的. 模块的好处 首先我们要了解使用模块的好处都有什么? 模块化.可重用: 封装变量与函数: 下面的示例为使用JavaScript实现的模块: var MyModule = function(name) { //这里定义的都是私有的成员 var myName = name; var age = 25; //这里返回一个对象, 使用 JS 的闭包实现类的效果 return { //这…
接口(Interface) TypeScript的核心机制之一在于它的类型检查系统(type-checker)只关注一个变量的"模型(shape)" 稍后我们去了解这个所谓的形状是什么东西这种机制我们常称为鸭子类型(duck typing),是动态类型的一种风格.在TypeScript中接口充当着命名这些类型的职责,同时也是一种强大的方式与你的代码内部或外部项目之间定义契约. 定义第一个接口 我们通过一个简单的例子来理解在TypeScript中接口是如何工作的: function pr…
TypeScript 前言 最近项目很急,所以没有什么时间回答关于Xamarin.Android方面的问题,也有一段时间没有更新.主要是手头很缺人,如果有谁有兴趣加入我们的话,可以私聊我,这样我就能继续造福社区了,同时还有很多的好的库我也可以开源(兼容MvvmCross).下面就我学习TypeScript. 工具 大家可以使用VS2013/2015,VS2012可以安装对应的插件,我们直接新建(带TypeScript的HTML应用程序),并在app.ts中进行开发,如果读者想查看对应生成的js代…
.class关键字和类名就可以定义一个类 . 类的访问控制符--有三个,.] = ] = ] = ;.声明参数 .用接口声明方法 .理解模块--一个文件就是一个模块,就是这么个意思 ,不用想的多么高大尚 文件1名为:a.ts,内容如下 .类的举例 .有一个工具叫Typings,这个是专门用来将一个框架变成定义文件用 面向对象特性一.类(class)--TypeScript的核心,使用TypeScript开发时,在部分代码都是写在类里面的.        1.class关键字和类名就可以定义一个类…
使用Typescript来写javascript 前几天尝试使用haxejs来写javascript,以获得静态类型带来的益处.虽然成功了,但很快发现将它与angularjs一起使用,有一些不太顺畅的地方,导致开发效率没有提升,反而下降了.虽然我认为使用haxejs来写普通的js(或者与jquery相关的js)没有问题,但不适合与angularjs这样与HTML侵入较大的js框架配合. 昨天偶然发现idea居然支持typescript了,于是打算尝试一下typescript,目前的感觉还不错,相…
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript - 类 从C#到TypeScript - 函数 从C#到TypeScript - 装饰器 从C#到TypeScript - Promise 从C#到TypeScript - async await C# vs TypeScript - 高级类型 上一篇讲了基础类型,基本上用基础类型足够开发了,不过…