ts 常用声明的数据类型_ts对象声明类型-程序员宅基地

/**
 * 1.1 ts 如何声明一个boolean, number, string类型的值
 */
// 在js中,定义 isFlag 为true, 但是后面还可以重新给它赋值为字符串,而ts中就不行,同理,声明number, string 也一样
let bool: boolean = true;
// 会报错:不能将类型“"str"”分配给类型“boolean”。
// isFlag = "str"
let str: string = "a";
// 会报错:不能将类型“1”分配给类型“string”。
// str = 1
let num: number = 1;
// 会报错:不能将类型“"a"”分配给类型“number”。
// num = "a"
/**
 *
 *
 *
 * 1.2 ts 如何声明一个 undefined, null 类型的值
 */
let u: undefined = undefined;
let n: null = null;
/**
 *
 *
 *
 * 1.3 ts 如何声明一个数组
 */
// 方式一:声明一个每一项只能是string类型的数组。在元素类型后面接上[],表示由此类型元素组成一个数组
let arr1: string[] = ["a", "b"];
// 方式二:使用数组泛型,Array<元素类型>
let arr2: Array<string> = ["a", "b"];
// 方式三:利用接口: ts的核心原则是对值所具有的结构进行类型检查,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约
interface NumberArray {
  // 这个接口表示:只要索引的类型是number,那么值的类型必须是number
  [index: number]: number;
}
let arr3: NumberArray = [1, 2, 3];
// 数组里想放对象?
let arr4: Array<object> = [{ a: "1" }, { b: "2" }];
// 数组里想放多种数据类型? 用 | 隔开就好
let arr5: Array<string | number> = ["a", 1];
// 数组里想放任意类型?
let arr6: Array<any> = ["a", 1, true, { a: 1 }, [1, 2]];
/**
 *
 *
 *
 * 1.4 ts 如何声明一个对象
 */
// 利用接口
interface OA {
  name: string; // 表示对象要有name属性, 值是string类型
  age?: number; // ? 表示age属性可以有也可以没有, 值是number类型
  readonly id: number; // readonly 表示 id 属性只可读,不可修改
}
let obj1: OA = { name: "obj1", id: 1 };
let obj2: OA = { name: "obj2", age: 18, id: 2 };
// 这种情况下name 和 id 属性必须要,age属性可要可不要,但是除了这三种属性外,其它的属性都不准出现
// let obj3:OA = {a: 1} // 会报错
// 有时候还是希望一个对象允许有任意的属性怎么办?
interface OB {
  name: string;
  age?: number;
  [propName: string]: any;
}
let obj4: OB = { name: "a" };
let obj5: OB = { name: "a", age: 1 };
let obj6: OB = { name: "a", age: 1, other1: 2, other2: "2", other3: { a: 1 } };
/**
 *
 *
 *
 * 1.5 ts 如何声明一个函数
 */
// 一: :void 表示函数没有返回值
function fn2(x: number): void {
  console.log(x);
}
// 二: 这里表示sum 函数接收两个参数(多了少了都不行), 参数类型是 number, 返回值也是number
function fn1(x: number, y: number): number {
  return x + y;
}
// 三: 同样也可以用?来表示可选参数,但是可选参数只能放到最后面
function fn3(x: number, y?: number): number {
  if (y) {
    return x + y;
  }
  return x;
}
// 四:ts 怎么表示默认参数
function fn41(x: number, y: number = 1): number {
  return x + y;
}
// 传值的时候,默认参数可以不传
fn41(1);
fn41(1, 2);
// 默认参数不像可选参数必须放后面,它也可以放前面, 但是还是推荐放后面去
function fn42(x: number = 1, y: number): number {
  return x + y;
}
// 传值的时候,默认参数可以不传,但是如果默认参数不放后面,这样传值感觉很怪
fn42(undefined, 2);
// 五:ts表示剩余参数。利用扩展运算符
function fn52(array: any[], ...items: any[]) {
  items.forEach(item => {
    array.push(item)
  })
}
// 六:箭头函数
// es6 箭头函数:没有参数的时候
// let fn61 = () => {}

// es6 箭头函数:一个参数的时候,可以不用圆括号
// let fn62 = arg => {
//   console.log(arg)
// }

// es6 箭头函数:多个参数的时候,如果致谢一行的话,不用大括号和return
// let fn63 = (arg1, arg2) => arg1 + arg2;

// es6 箭头函数:多个参数并且换行的时候,需要写大括号和return
// let fn64 = (arg1, arg2) => {
//   return arg1 + arg2
// }

// es6 箭头函数:返回一个对象,必须在对象外面加上圆括号
// let fn65 = (arg1, arg2) => ({a: arg1, b:arg2})

// es6 上例中一般会不改名字,同名可以缩写成这样
// let fn66 = (arg1, arg2) => ({
//   arg1,
//   arg2
// })
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_45043105/article/details/109578623

智能推荐

思维的演变-程序员宅基地

文章浏览阅读200次。 Part1: COM是一个更好的C++ 起初C++得益于Bell实验室。在那里诞生了第一个C++开发产品——CFRONT,且公布了许多关于C++的核心工作。大多数C++经典书籍都出版于80年代后期以及90年代早期。在这段时间内,许多C++开发人员(包括几乎每一本重要C++书籍的作者)都在UNIX平台上工作,并且利用当时的编译器和链接器技术建立起许多独立的应用。这一代开发人员所用的的..._如何演变成soap

php抽奖概率算法-程序员宅基地

文章浏览阅读51次。1234567891011121314151617181920212223242526272829303132333435363738//概率算法,6个奖项$prize_arr=array('0'=>array('id'=>1,'prize'=>'iphone6','v'=>1),'1'=>array('id'=>2,'prize'=..._php概率区间获取数值

MultipartFile转Base64,实现阿里图片识别-程序员宅基地

文章浏览阅读1.1w次。直接上代码,注意常量需要查看阿里的技术文档。@ResponseBody@RequestMapping(value = "/drivingLicenseOcr", method = {RequestMethod.POST})@ApiOperation(value = "行驶证识别", notes = "", httpMethod = "POST", produces = MediaTyp

java bootclasspath_xbootclasspath-程序员宅基地

文章浏览阅读5k次,点赞5次,收藏12次。目录前言查看 bootclasspath修改bootclasspath-Xbootclasspath/a 示例-Xbootclasspath/p 示例关于目录可以添加class文件目录不可以添加存放jar文件目录扩展知识前言jdk1.8查看 bootclasspathimport java.io.File;public class Test { public static void main(String[] args) { printPath("sun.boot.class.path_xbootclasspath

python对自定义函数求导_pytorch中的自定义反向传播,求导实例-程序员宅基地

文章浏览阅读872次。更多python教程请到: 菜鸟教程www.piaodoo.com人人影视www.sfkyty.com16影视www.591319.com星辰影院www.591319.compytorch中自定义backward()函数。在图像处理过程中,我们有时候会使用自己定义的算法处理图像,这些算法多是基于numpy或者scipy等包。那么如何将自定义算法的梯度加入到pytorch的计算图中,能使用Los..._for j in range(self.spedata.shape[0]):

Python基础3 —— 字符串处理_print(text[0:3])print(text[3:6])print(text[6:9])pr-程序员宅基地

文章浏览阅读865次。字符串的内容提取# 定义字符串变量,Python字符串的索引是从0开始的,右侧最后一个字符的位置为0-1,即-1>>> strText = "Hello World!">>> print (strText)Hello World!# 按索引提取字符串内容>>> print (strText[0])H>>> print (strText[-2])d# [:]表示从第一个字符(0)到结尾(-1)的整个字符串>_print(text[0:3])print(text[3:6])print(text[6:9])print(text[9:12])print(text[

随便推点

2023 年最新版 Java 后端最全面试攻略,全面对标 BATJ互联网大厂_java后端面试-程序员宅基地

文章浏览阅读871次。小编分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!_java后端面试

发现了新大陆--嵌入式入门C语言必学的课程-程序员宅基地

文章浏览阅读1.2k次。MSN上又问到爱胜问题啦(哈哈,兄弟真好,我问那么多问题都没烦,感动!:)),Beson(爱胜英文名)说,搞嵌入式的话要把给我的那个c的资料好好看看,重点是指针/内存那章,他以前找工作时候有一次面试100%的都是那上的题目,非常重要,他那次只用了15分钟都搞定了(强!)。还说,港港找工作的时候也让他看了,也找到了,听说也好多都是那上面的。哇塞,真是武功秘籍啊!这本书一定要当圣经看啊!然而,好像

6月2日 HarmonyOS 2及华为全场景新品发布会 邀您一同见证_harrmony os 发布会 6月2日-程序员宅基地

文章浏览阅读2.1k次。本帖最后由诗永于2021-06-02 17:01:08编辑6月2日晚20点,开发者联盟HarmonyOS社区邀您共同见证,多平台同步直播,敬请期待!▼▼▼扫码注册华为账号,开启HarmonyOS开发之旅▼▼▼▼▼▼PC端下载DevEco Studio▼▼▼▼▼▼体验全场景分布式开发乐趣▼▼▼https://developer.harmonyos.com/cn/develop/deveco-studio#download欢迎广大伙伴和开发者朋友加入HarmonyO..._harrmony os 发布会 6月2日

c语言实现多行输入输出数据_c语言如何输入多行数据后才出现多行输出-程序员宅基地

文章浏览阅读1.9w次,点赞12次,收藏58次。刷题中遇到的要求多行输入与输出_c语言如何输入多行数据后才出现多行输出

LUA 安装 cjson遇到问题 cannot find -llua51_could not find lua51-程序员宅基地

文章浏览阅读721次。安装cjson从GitHub下载cjson源码安装mingw下载完成后, 双击安装, 安装 Basic Setup 中的那些即可:4 拷贝%LUA_HOME%\lua51.dll 到 %mingw_home%\lib下5 拷贝 %LUA_HOME%\include 到 %mingw_home%\include (合并)编译lua-cjsona. 解压下载的lua-cjson源码: lua-cjson-2.1.0b. 修改makefile文件, 放开windows及Solaris的相关注释_could not find lua51

开源 合作 云_每个人都是您的开源合作伙伴-程序员宅基地

文章浏览阅读122次。开源 合作 云 当我刚开始在ByWater Solutions工作时,公司还处于起步阶段,因此无法负担全职员工的工资 ,但这并没有阻止他们雇用我。 ByWater Solutions为Koha开源集成图书馆系统提供支持,托管,培训和开发。 与我一样,ByWater的首席执行官Brendan Gallagher曾经(而且现在)是Koha社区的活跃成员。 因此,当布伦丹(Brendan)想要雇用..._找人写源代码合作