十分钟玩转TypeScript
Posted 才华与信仰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十分钟玩转TypeScript相关的知识,希望对你有一定的参考价值。
上一篇对typescript进行简单的介绍,有读者说,想学会如何用typescript。那这一篇会详细介绍typescript的基本操作。
数据类型
要了解typescript首先从数据类型以及一些基本的概念有所掌握。
no.1 基本数据类型
//使用 string 定义字符串类型:
let myName: string = 'Ek'; //编译通过
myName = Ek;
//error 初始化myName时已定义为string类型,此时赋值为数值变会报错,后面的
//数据类型约定也同样。
//使用 number 定义数值类型:
let age: number = 23;
//使用 boolean 定义布尔值类型:
let isMan: boolean = true;
//使用 void 定义空值类型:
function consoleName(): void {
console.log('My name is Ek');
}
//使用 null 和 undefined 来定义这两个原始数据类型:
let person: undefined = undefined;
let slogen: null = null;
no.2 .联合类型
let sex: string | number;
sex = '男';
myFavoriteNumber = 1;
no.3 数组的类型
//[类型 + 方括号]表示法 变量的赋值根据类型的定义决定
let series: Number[] = [1, 2, 3, 4, 5];
let series: (Number | String)[] = [1, '1', 2, 3];
let series: any[]= [1, '1', true, 2];
//接口表示法 接口可以用来描述数组
interface NumberArr{
[index: Number]: Number
}
let series: NumberArr = [1, 2, 2, 3];
// 类数组表示法 常见的类数组都有自己的接口定义,如 IArguments, NodeList, htmlCollection 等
function sum(){
let args: Iarguments = arguments;
}
no.5 函数的类型
// 函数声明 对参数以及返回值进行类型约束,同时不允许多余或者缺少参数。
function sum(x: Number, y: Number): Number {
return x + y;
}
// 函数表达式 左边是输入类型,需要用括号;右边是输出类型,需要进行类型的约束。=>在TypeScript里面指的是对函数的定义
let mySum: (x: Number, y: Number) => function (x: Number, y: Number): Number {
return x + y;
};
面向对象
no.1 类
// private 私有修饰符 不能在外部访问
class Animal{
private name: string ;
constructor(name) {
this.name = name;
}
}
let cat = new Animal('mike');
cat.name = 'Tony'; //error
// public 公有修饰符 外部都可以访问
class Animal{
public name: string ;
constructor(name) {
this.name = name;
}
}
let cat = new Animal('mike');
cat.name = 'Tony'; //Tony
// protected 受保护修饰符 允许在子类访问
class Animal{
public name: string ;
constructor(name) {
this.name = name;
}
}
class Cat extends Animal{
constructor(){
super(name)
console.log(this.name);
}
}
//abstract 抽象类,不允许实例化,但允许子类访问
abstract class Animal {
public name: string ;
public constructor(name) {
this.name = name;
}
public abstract sayHi();
}
let a = new Animal('Jack'); //error
class Cat extends Animal {
public sayHi(): string {
console.log(`Meow, My name is ${this.name}`);
}
}
let cat = new Cat('Jack');
Cat.sayHi(); //Meow, My name is Jack
//泛型 参数化的类型,用来限制集合的内容
let keepAni: Array<person> = [];
keepAni[0] = new Cat('jack');
keepAni[1] = 2; //error
no.3 模块
//a.ts
export class1 {
}
class2{
}
//b.ts
import {prop1} from './a';
new class1();
no.3 接口
//必选属性
interfance Ek { sex: Number; weight: String}let Person: Ek { sex: 1, weight: '65kg'}
//可选属性, 只对已定义的属性有效
interfance Ek { sex: Number; weight?: String}let Person: Ek { sex: 1 }
//任意属性, 设置any类型。注意:如果props的值为string类型的话,Ek所有属性都为string类型
interfances Ek {
sex: String;
weight: String;
[propsName: string]: any
}
let Person: Ek {
sex: 1,
weight: '65kg',
height: 'xxx'
}
// 只读属性, readonly 只在interface初始化时才能使用,同时初始化变量之后不允许修改该属性
interface Person {
readonly id: number;
name: string;
[propName: string]: any;
}
let Ek: Person = {
id: 89757,
name: 'Ek',
sex: 1
};
tom.id = 3345; //error 此时id为只读属性,不允许修改值
代码检查
//分别安装Typescript,eslint与Tslint 由于eslint需要支持TypeScript的语法,因此需要安装以下插件
npm install --save-dev tslint
//创建tslint的配置文件tslint.json
{
"rules": {
// 必须使用 === 或 !==,禁止使用 == 或 !=,与 null 比较时除外
"triple-equals": [
true,
"allow-null-check"
]
},
"linterOptions": {
"exclude": [
"**/node_modules/**"
]
}
}
//在package.json中添加Tslint的命令
{
"scripts": {
"tslint": "tslint --project . src/**/*.ts src/**/*.tsx",
}
}
结语
以上便是对TypeScript的基础用法以及一些概念、配置的使用,掌握这些基本使用TypeScript就没啥问题了,不过还是那句话,多敲,多看,真正学会TypeScript还是需要进行深入的了解与学习。
推荐文章
end
以上是关于十分钟玩转TypeScript的主要内容,如果未能解决你的问题,请参考以下文章
typescript Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming/angular-2/
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming
typescript Angular最终版本的Angular 2测试片段。代码库https://developers.livechatinc.com/blog/category/programming