当前位置: 首页 > news >正文

记录一下ts学习整理的一些知识点

TS开发知识点

1、xxxx.d.ts || xxxx.ts 声明文件

TypeScript 的设计目标之一是让你在 TypeScript 中安全、轻松地使用现有的 JavaScript 库,TypeScript 通过声明文件来做到这一点

**声明文件的定义:**通过 declare 关键字来告诉 TypeScript,你正在试图表述一个其他地方已经存在的代码。环境声明就好像你与编译器之间的一个约定,是一个文档。

**声明文件的特点:**1、声明文件头部没有任何import与export,声明文件才能全局生效2、如果一个声明文件的顶层作用域中有 import || export,那么这个声明文件就是一个模块类声明文件,不会在全局生效,需要按模块的方式导出;

2、类型断言

const foo = {};
foo.bar = 123; // Error: 'bar' 属性不存在于 ‘{}’
foo.bas = "hello"; // Error: 'bas' 属性不存在于 '{}' 

这里的代码发出了错误警告,因为 foo 的类型推断为 {},即是具有零属性的对象。因此,你不能在它的属性上添加 bar 或 bas,你可以通过类型断言来避免此问题:

interface Foo {bar: number;bas: string;
}

const foo = {} as Foo;
foo.bar = 123;
foo.bas = 'hello'; 

最初的断言语法如下所示:

let foo: any;
let bar = <string>foo; // 现在 bar 的类型是 'string' 

3、interface VS type

相同点:\

1.都允许拓展(extends)\
2.都可以描述一个对象或者函数

不同点:\

1.type 可以声明基本类型别名,联合类型,元组等类型

```JS
// 基本类型别名
type Name = string
// 联合类型
interface Dog { wong();
}
interface Cat { miao();
}
type Pet = Dog | Cat
// 具体定义数组每个位置的类型
type PetList = [Dog, Pet]

  1. type 语句中还可以使用 typeof 获取实例的 类型进行赋值
  2. interface 能够声明合并
interface User {
name: string
age: number
}

interface User {
 sex: string
}

/*
User 接口为 {
 name: string
 age: number
 sex: string
}
*/

### 4、interface定义数组,数组的项为对象

interface objData {a: number,b: any,
}
// 定义一个普通的对象
const obj: objData;
// 定义一个包含对象的数组
const arr: objData[];

// 如果objData中的a类型需要变为string,则ts需要类型兼容
interface objData {a: T,b: any,
}
const obj: objData;
const arr: objData[];


### 5、指定私有属性

class store { private name; private tel; constructor(name: string, tel: number) { this.name = name; this.tel = tel; } get storeInfo() { return ‘门店名称:’ + this.name + ‘电话:’ + this.tel; }
}
const storeDetail = new store(‘mton的小店’, 123213213);
console.log(storeDetail);


 + '电话:' + this.tel; }
}
const storeDetail = new store('mton的小店', 123213213);
console.log(storeDetail); 

个人学习笔记,有错误的地方大家说出来鸭~~

相关文章:

  • java计算机毕业设计基于安卓Android的急救服务APP
  • MyBatis Plus (四) --------- 条件构造器 EntityWrapper
  • 神经网络算法应用案例,神经网络是机器算法吗
  • 2023中国(江西)国际餐饮品牌连锁加盟展览会2月26日开幕
  • Java ServiceLoader、Spring SpringFactoriesLoader、SPI方式解耦第三方组件
  • 聚焦个性化与场景化,全新升级的三星电视看点何在?
  • LeetCode每日一题JAVA、JavaSrcipt题解——2022.08.21-08.31
  • 哪种神经网络最好使用,哪种神经网络最好用
  • 02- Spring IOC与DI
  • 基于jeecgboot流程管理平台的自定义业务表单集成方法
  • 矩阵类问题处理技巧
  • MyBatis Plus (三) --------- 入门 HelloWorld
  • 云安全践行者:亚马逊云科技如何打好“安全”牌?
  • 第8章 Spring AOP
  • 操作系统 | 【一 概述】强化阶段 —— 应用题总结
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 5、React组件事件详解
  • Apache Zeppelin在Apache Trafodion上的可视化
  • css系列之关于字体的事
  • Date型的使用
  • iOS 系统授权开发
  • javascript 总结(常用工具类的封装)
  • JavaScript新鲜事·第5期
  • Java小白进阶笔记(3)-初级面向对象
  • LeetCode18.四数之和 JavaScript
  • leetcode46 Permutation 排列组合
  • linux学习笔记
  • 安卓应用性能调试和优化经验分享
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 欢迎参加第二届中国游戏开发者大会
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 如何用vue打造一个移动端音乐播放器
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #vue3 实现前端下载excel文件模板功能
  • (floyd+补集) poj 3275
  • (ibm)Java 语言的 XPath API
  • (poj1.2.1)1970(筛选法模拟)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)hibernate配置管理
  • (二)斐波那契Fabonacci函数
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三)mysql_MYSQL(三)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)平衡树
  • .NetCore部署微服务(二)
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET微信公众号开发-2.0创建自定义菜单
  • /etc/skel 目录作用
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • /var/spool/postfix/maildrop 下有大量文件
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • []新浪博客如何插入代码(其他博客应该也可以)