一,环境

1 新增的数据类型和部分语法,没有办法在浏览器和node 中执行,需要安装typescript 环境

  安装:npm i -g typescript

  成功:tsc -v

2 在浏览器中使用ts

  tsc xxx.ts  执行后会生成.js 文件

  tsc 无法加载文件

(1)以管理员身份运行vscode或者powershell

(2)查询Powershell详细策略,在终端执行:get-ExecutionPolicy,显示Restricted(禁止状态)

(3)更新Powershell策略,在终端执行:set-ExecutionPolicy RemoteSigned

(4)再次查询策略状态,在终端执行:get-ExecutionPolicy,显示RemoteSigned

3 工具 ts-node  自动将ts 转 js

  安装 npm i -g ts-node

  使用 ts-node 文件名

4 设置vscode 自动编译

  tsc --init 创建tscconfig.json

  修改tscconfig.json 文件  设置js 文件夹 “outDir” :"./js/"

  设置 vscode 监视任务  终端--运行任务

二,数据类型

  原有类型:string number boolean array null undefin ed Symbol object

  新增类型:tuple enum枚举 any任意类型 never void

三,详细demo

  1. 字符串(也可以使用模版字符串

let aName: string = '英雄'
let bName: string = `gene`
let cName: string = `hello,my name is ${bName}`

  2.数值

let aNum: number = 123
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

  3.布尔(不能用1 和0)

let isDone: boolean = false;

  4.数组

字符串数组  let arr:string[]=['1','2','3']
数组泛型 let arr1:Array<string>=['1','2','3']

  5.元组  tuple 规定了元素数量和每个元素类型的数组

let arr2: [string, number] = ['1',2]
  console.log(arr2[1])

  6.枚举  enum  用一组标识 来代表 数值  

               枚举项 :一般英文单词或数字 枚举值:整型数字(可以省略)
enum color1 {red, green, blue}  // 默认0 1 2
enum sex {
boy = 1,
girl = 2,
unknow = 3
}
let userSex:sex = sex.boy
console.log(userSex)

  7.any 任意类型  一般在获取dom 对象里使用

let arrList: any = [1, '1', false]

  8. void 代表没有类型 一般用在无返回值的函数

function sayHi(name: string) :void {
console.log('hi' + name)
}
sayHi('jack') function sayHello() :string {
return 'hello'
}
sayHello()

  9. never 代表不存在的值的类型 常用作 抛出异常 或无限循环的 函数返回类型

           never 类型 是ts 中的底部类型,所有类型都是 never 类型的 父类,   所以 never类型值 可以赋给 任意类型的变量
function test(): never {
while(true) {
console.log('无限循环了~~')
}
}
function test1(): never {
throw new Error('出错~~') ;
}

  10.类型推断    如果变量的声明和初始化在同一行,那么可以省略到变量类型的声明

 let 变量名: 变量类型 = 值   可以写成  ===》  let 变量名 = 值
let age: number = 18 ===> let age = 18

  11. 联合类型  表示 取值可以为多种类型中的一种

 let 变量名: 变量类型1 | 变量类型2 = 值
let prmValue: string | null = prompt('请输入名字');
console.log('wwww' + prmValue);

  12.函数

//函数返回值
function sayHello() :string {
return 'hahah'
}
let aaa: string = sayHello() //传参
function sayHi(name:string , age: number) :string {
return 'hi,' + name + ', you age is ' + age
}
let bbb: string = sayHi('jack', 18)
console.log(bbb) //可选参数 加 ? 表示可传可不传
function sayHi(name:string , age ?: number) :string {
return 'hi,' + name + ', you age is ' + age
}
let bbb: string = sayHi('jack')
console.log(bbb) //默认值
function sayHi(name :string='wiim' , age= 19) :string {
return 'hi,' + name + ', you age is ' + age
}
let bbb: string = sayHi('jack')
let ccc: string = sayHi( undefined ,21)
console.log(ccc) //剩余参数 是数组
function add(num1: number, num2: number, ...othernum: number[]) :void {
// 声明变量接收
let all: number = num1 + num2;
// 剩余参数处理
for(let i of othernum) {
all += i
}
console.log(all)
}
add(1,2,3,4,5)

  13.类

  构造函数

function City(name) {
this.name = name
}
City.prototype.about = function() {
console.log('这是' + this.name); }
var c1 = new City('北京')
console.log(c1.name)
c1.about()

  类

class City {
// 成员变量
name: string;
// 构造函数
constructor(message: string) {
this.name = message;
}
// 成员方法
about() {
return "Hello, " + this.name;
}
} let c1 = new City("world");
console.log(c1.name);
console.log(c1.about());

修饰符

public:默认

private:能在声明它的类的外部访问

protected:派生类中仍然可以访问

readonly:只读属性必须在声明时或构造函数里被初始化

class Animal {
private name: string;
constructor(theName: string) { this.name = theName; }
}

参数属性:参数属性通过给构造函数参数前面添加一个访问限定符来声明

class Octopus { 
     readonly numberOfLegs: number = 8; 

    readonly name: string;
    constructor (theName: string) { 
      this.name = theName;
    }
} ==================
class Octopus {
readonly numberOfLegs: number = 8;

constructor(readonly name: string) {

}
}

舍弃了 theName,仅在构造函数里使用 readonly name: string参数来创建和初始化 name成员。 我们把声明和赋值合并至一处

静态属性static

class Grid {
static origin = {x: 0, y: 0};
calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
constructor (public scale: number) { }
} let grid1 = new Grid(1.0); // 1x scale
let grid2 = new Grid(5.0); // 5x scale console.log(grid1.calculateDistanceFromOrigin({x: 10, y: 10}));
console.log(grid2.calculateDistanceFromOrigin({x: 10, y: 10}));

抽象类: 它们一般不会直接被实例化

abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log('roaming the earch...');
}
}

localStrage 中使用

let obj: Object = {
name:'zs',
age:18
}
let strJson: string = JSON.stringify(obj)
window.localStorage.setItem('obj',strJson) let strJson1 : string | null = window.localStorage.getItem('obj') // 类型断言
let obj1 = JSON.parse(strJson as string)

打卡ts day01 数据类型,类的更多相关文章

  1. ts中的类的定义,继承和修饰符

    自己搞一个ts文件 里面写代码如下,试一下就行了 /* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": &q ...

  2. TypeScript——02——TS基本数据类型介绍和使用

    一,TS的数据类型 ES6的数据类型: 6种基本数据类型 Boolean Number String Symbol undefined null 3种引用类型 Array Function Objec ...

  3. TypeScript完全解读(26课时)_9.TypeScript完全解读-TS中的类

    9.TypeScript完全解读-TS中的类 创建class.ts文件,并在index.ts内引用 创建一个类,这个类在创建好后有好几个地方都标红了 这是tslint的一些验证规则 一保存就会自动修复 ...

  4. Ts基本数据类型

    TS的基本数据类型 string let str : string str = 1 //报错 会提示num是字符串 不是数字 str = 'test' //正确 //拼接字符串 let str2 : ...

  5. transcription-coupled repair|Germ|HK|TS|Mutation|四类变异

    生命组学-可遗传变异 GC content:碱基: GC content不同的植物对应的gene length,可看作上图的转置: 由GC content看出来碱基变异程度,可以找到对应碱基改变,所以 ...

  6. TS 基础数据类型

    1.基础数据类型 Boolean布尔值   Number数字 String字符串  Array数组 Tuple元组  Enum枚举   Any    void Boolean布尔值:true/fals ...

  7. ts常用数据类型

    1.1 布尔值 let isTrue: boolean = false; console.log(isTrue); 1.2 数字 let age: number = 26; console.log(a ...

  8. ts中的类

    TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一些新的用法(部分ES7). 一.ES6中类的主要用法: 1.使用 class 定义类,使用 constructor 定义构造函 ...

  9. ts 学习笔记 - 类

    目录 类 类的概念 类的用法 属性和方法 类的继承 存取器 静态属性 Typescript 中的用法 抽象类 类的类型 类与接口 类实现接口 接口继承接口 接口继承类 混合类型 类 类的概念 类 (c ...

  10. TypeScript学习第二天:认识ts的数据类型

    目录 1,类型总览 2,基本类型 2.1,布尔 2.2,数字 2.3,字符串 2.4,Null 2.5,undefined 2.6,symbol 2.7,bigint 3,引用类型 3.1,数组 Ar ...

随机推荐

  1. 对于goland相对较新一些版本新建项目时没用go mod模式选项的坑

    前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在 ...

  2. [cocos2d-x]关于动画

    声明一下:看见这篇文章总结的已经非常好了,没必要再去自己到处东翻西找了,链接:http://shahdza.blog.51cto.com/2410787/1546998 [唠叨] 基本动画制作需要用到 ...

  3. win32com操作word 第二集:Application&Documents接口

    本课程<win32com操作word API精讲&项目实战>以视频为主,文字教程为辅,公众号ID:一灯编程. 先回答一个网友私信问题: win32com和微软的word接口文档有什 ...

  4. OpenMP 环境变量使用总结

    OpenMP 环境变量使用总结 OMP_CANCELLATION,在 OpenMP 规范 4.5 当中规定了取消机制,我们可以使用这个环境变量去设置是否启动取消机制,如果这个值等于 TRUE 那么就是 ...

  5. Vue插槽最全最通俗的总结

    1.匿名插槽----就是定义的时候不带name的插槽,使用的时候也不用带name 总结: (1)一定要分清定义插槽和使用插槽格式.如上图A是在使用一个插槽的基础上再继续定义一个匿名插槽. (2)匿名插 ...

  6. Win10环境下yolov8(ultralytics) 快速配置与测试

    win10下亲测有效!(如果想在tensorrt+cuda下部署,直接看第五5章) 一.win10下创建yolov8环境 # 注:python其他版本在win10下,可能有坑,我已经替你踩坑了,这里p ...

  7. Java 进阶P-2.5+P-2.6

    包 Java 包(package) 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一 ...

  8. windows消息处理机制

    三层机制 1.顶端就是Windows内核.Windows内核维护着一个消息队列,第二级控制中心从这个消息队列中获取属于自己管辖的消息,后做出处理,有些消息直接处理掉,有些还要发送给下一级窗体(Wind ...

  9. 带你读AI论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击

    摘要:这篇文章属于系统分析类的文章,通过详细的实验分析了离地攻击(Living-Off-The-Land)的威胁性和流行度,包括APT攻击中的利用及示例代码论证. 本文分享自华为云社区<[论文阅 ...

  10. java控制接口超时时间

    package com.xf; import java.util.concurrent.Callable; public class bbb implements Callable { private ...