前言
- 现在Ts也是比较流行,想自学一下ts
- 所以就一起来学习一下,做下笔记吧
笔记目录
- 安装ts
- 第一个ts
- 项目使用
- 五分钟上手ts
- 基础类型
安装ts
- 全局安装ts
$ sudo npm install -g typescript
复制代码
- 全局安装编译环境tsc
$ sudo npm install -g tsc
复制代码
第一个ts
- 创建 greeter.ts文件
- 文件内部写一个greeter的函数
function greeter(person) {
return "Hello, " + person;
}
let user = "Jane User";
console.log(greeter(user))
复制代码
- 编译
$ sudo tsc greeter.ts
复制代码
- 运行查看
$ sudo node greeter.js
复制代码
项目使用
- npm init -y 初始化
- 定义package
"build" : "tsc greeter.ts",
"test" : "node greeter.js",
"start" : "npm run build && npm run test"
复制代码
- npm run start 就等于运行了全部
五分钟上手TypeScript
定义类型实现规范化,类型注解
function greeter (person:string) {
return "Hello, " + person;
}
let user = "YHF";
document.body.innerHTML = greeter(user);
复制代码
接口
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "Y", lastName: "HF" };
console.log(greeter(user));
复制代码
类
- 可以使用类的方法对数据进行约束
- 在构造函数的参数上使用public等同于创建了同名的成员变量
- 在定义的时候也是可以使用数据约束的
class Student {
fullName: string;
constructor(public firstName,public middleInitial : number,public lastName) {
this.fullName = firstName+ " " + middleInitial.toString() + " " + lastName;
}
}
class Student {
fullName: string;
firstName: string;
middleInitial: number;
lastName: string;
}
复制代码
在web如何使用ts
基础类型
布尔值
let isDoneNew : boolean = true;
let isDoneString: boolean = "true";
复制代码
数字
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
复制代码
字符串
let name: string = "bob";
name = "smith";
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.
I'll be ${ age + 1 } years old next month.`;
复制代码
数组
let list : number[] = [1,2,3];
let list2: Array<number> = [1, 2, 3];
复制代码
元组 (其实还是数组)
- 这个东西看起来很人性化
- 在内部每一个位置你都可以定义类型,不相同的类型
- 但是需要插入数据时要一一的对应
let x: [string, number];
x = ['hello', 10];
x = [10, 'hello'];
复制代码
枚举 (和js比起来容易实现很多)
- 这个枚举呢说是对象也不像对象,说数值也不像数组
- 用对象获取法,获取到的是对应的编号
- 用数组获取法,获取到的是对应的文字
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
enum Color {Red, Green, Blue}
let colorName: string = Color[2];
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
复制代码
Any (简称任意类型什么都可以支持)
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
let list:any[] = [1,true,"free"];
list[0] = 'aaa'
复制代码
Void (不能拥有返回类型,就是无返回类型)
function warnUser(): void {
console.log("This is my warning message");
}
let unusable: void = undefined;
复制代码
null/undefined
- 这个就不说了只可以接收自己本身null或undefined 或者 赋值给 void
Never (永远无法到达的类型...)
- 简单的说就是一下常抛出异常
- 数据永不为真时也是never类型
- 任何类型除了never本身都不可以赋值给他
- 但是never可以赋值给任何类型
function error(message: string): never {
throw new Error(message);
}
function fail() {
return error("Something failed");
}
function infiniteLoop(): never {
while (true) {
}
}
复制代码
Object (简单点就是对象)
- object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
declare function create(o: object | null): void;
create({ prop: 0 });
create(null);
create(42);
create("string");
create(false);
create(undefined);
复制代码
类型断言 (明确类型)
- 有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。
- 其实就是给他明确类型的意思,就是你知道这个是什么类型就直接写什么
- 但是如果上面any定义的类型和你写的不一样,就会出现报错就是出不来
- 两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
复制代码
后记
- 这个就是我学习Ts的第一天的笔记,欢迎更多的同行大哥指导交流
- 欢迎进入我的博客:https://yhf7.github.io/
- 如果有什么侵权的话,请及时添加小编微信以及qq也可以来告诉小编(905477376微信qq通用),谢谢!