TS-黑马(一)

news2024/12/28 19:29:43

目录:

(1)ts-入门

(2)ts-类型-标注位置

(3)ts-类型-复杂类型

(4)ts-类型-函数类型


(1)ts-入门

我们讲过javaScript语言是动态的语言,动态的语言可能出现一些问题,比如说:这个函数的参数就是动态的可以是任何类型:对象、函数、数字、字符串...

 

 比如是字符串类型:

 

 

 

 但是这个函数写好后,使用者没有考虑这个类型,传了数字类型:但是数字里面没有字符串的方法:就会报错:

 

javaScript是动态类型语言,那么它想要拥有静态类型语言的特点,行不行呢?我们可以对javascript进行扩展,扩展成一个新的语言叫做typescript语言:他就具有静态类型的检查:

定义:.ts  定义函数是参数做类型检查,定义字符串类型,定以后就会显示字符串的方法

 

 

 

当参数传递不是字符串:123就会报错 

 

 typeScript的代码不能直接运行,必须经过编译成js才能够运行,typeScript只是在编译期间做类型的而检查,所以我们需要安装一个typeScript的编译器:

是用npm安装:-g是全局安装

 首先进入代码目录:执行tsc编译:

编译之后就会生成一个同名的hello.js:编译之后就会做一个类型的擦除:退回到动态类型了,在编译值前做了类型的检查了,就不会传递过来一个错误的做法

 

 (2)ts-类型-标注位置

 typeScript对类型的支持还是比较丰富的

标注变量:     用法:在定义变量时:他就会显示message字符串的方法 

当赋的值为字符串时可以省略: 

 

 

 标注函数:

 

标注返回值:

 

这个函数的类型声明可以省略: 

 类型声明可以加在变量上、参数上、函数的返回值上,很多情况下可以把类型声明省略,只要它能够推断出类型这个类型:变量类型,参数类型,返回值类型。就可以省略这是typeScript做了很多类型推断。

(3)ts-类型-复杂类型

用type声明:赋值是属性要对应,不能多不能少。,多了少了爆红

 

 interface声明:跟type声明一致。赋值是属性要对应,不能多不能少。,多了少了爆红

 复杂类型这两个都可以,对于java程序员来说可用interface容易理解:

他们编译之后复杂类型就会丢失:

编译:

 

interface就没有了,被擦除了 

 

 它的检查只在编译阶段,编译之后就没了

定义可选类型:

typeScript定义的复杂类型,赋值是如果想要类型是可选的,在定义时加?

可选属性:属性有也可以没有也可以,没有的话,访问的话是undefind

 

 

 当一个变量没有明确声明类型时,如果它跟需要的类型比较像,那么他就可以被当成这个类型目标类型:

被当成这个目标类型Cat在里面可以访问这个Cat类型的属性 ,但是不能访问这个目标类型的没有的属性,否则会报错

 

 (4)ts-类型-函数类型

方法的定义:没有参数,没有返回值 

 上面只是方法的定义,它还没有具体的实现,你要真正去实现它需要创建api对象里面给方法一个实现,跟java的interface像似了:

下面我们定义一个字符串参数,返回值也是字符串的函数怎么写呢?

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一次组件化与Android Jetpack的实践

前言 至今为止从事Android开发两年多了,17年开始实习时,恰逢APP刚刚立项不久,当时新项目沿用了旧项目古老的MVC架构。从那之后一直都是根据飘忽不定的需求,没有规则的垒代码。 直到18年中,其他项目组开发的APP要求集…

C语言入门篇——介绍篇

目录 1、什么是C语言 1、C语言的优点 3、语言标准 4、使用C语言的步骤 5、第一个C语言程序 6、关键字 1、什么是C语言 1972年,贝尔实验室的丹尼斯里奇和肯汤普逊在开发UNIX操作系统时设计了C语言,C语言是在B语言的基础上进行设计。C语言设计的初衷…

算法记录 | Day38 动态规划

对于动态规划问题,将拆解为如下五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509.斐波那契数 思路: 确定dp数组(dp table)以及下标的含义&#x…

Linux应用编程(线程)

与进程类似,线程是允许应用程序并发执行多个任务的一种机制,线程参与系统调度,事实上,系统调度的最小单元是线程、而并非进程。 一、线程概述 什么是线程? 线程是参与系统调度的最小单位。它被包含在进程之中&#x…

shell之自定义mykill(十六)

公众号:Android系统攻城狮 简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】&am…

2023-04-21:用go语言重写ffmpeg的metadata.c示例。

2023-04-21:用go语言重写ffmpeg的metadata.c示例。 答案2023-04-21: 这段 Go 代码演示了如何使用 ffmpeg-go 库中的函数来读取多媒体文件元数据,包括视频、音频等信息。它的大体过程如下: 设置环境变量以加载 FFmpeg 动态链接库…

紫砂壶型和泥料适配茶叶

一、壶型 1、紫砂壶泡茶,一般是壶音频率较高者,适宜配泡重香气的茶叶,如青茶;壶音稍低者较宜配泡重滋味的茶,如乌龙、铁观音。 壶音频率:是将壶盖取下,一手托住壶身一手用壶盖轻敲壶把产生的声音 2、容量在200ml以下…

MVC、MVP、MVVM:谁才是Android开发的终极之选?

概述 MVC、MVP、MVVM 都是在 Android 开发中经常用到的架构思想,它们都是为了更好地分离代码、提高代码可复用性、方便维护等目的而设计的。下面对这三种架构思想进行简单的介绍和比较。 MVC MVC 架构是最早被使用的一种架构,它把程序分成了三个部分&…

【LeetCode: 152. 乘积最大子数组 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

双语|中国和印度仍然主导着美国的国际学者领域

由美国国务院教育和文化事务局支持的国际教育学会期刊《门户开放》,调查了2021-2022赴美的国际学者来源情况,发表文章,“China and India still dominate international scholars field in US”(中国和印度仍然主导着美国的国际学…

初中级测试工程师,软件测试面试题总结大全(功能/接口/自动化测试)你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般软件测试的面…

安全防御 IPsec VPN

目录 1.什么是数据认证,有什么用,有哪些实现的技术手段? 2.什么是身份认证,有什么用,有哪些实现的技术手段? 3.什么是VPN技术? 4.VPN技术有哪些分类? 5.IPsec技术能够提供哪些安…

linux中静态库与动态库

linux中静态库与动态库 1. 静态库静态库的制作:静态库的使用: 2. 动态库动态库的制作:动态库的使用: linux中静态库与动态库的区别 1. 静态库 静态库的制作: gcc add.c mult.c -c //这样就生成add.o mult.o目标文件 …

【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络

1 实验内容简介 1.1 实验目的 (1)熟练掌握tensor相关各种操作; (2)掌握广义线性回归模型(logistic模型、sofmax模型)、前馈神经网络模型的原理; (3)熟练掌…

UBUNTU下NFS配置(用于嵌入式开发)

1. NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就…

低代码(九)低代码平台后设计一:模型驱动

我们先看一下汽车的基本构造,由车身、发动机、方向盘等多个零部件构成,因为它是一个工业产品,有实物存在,摸得着看得见,所以大家很容易理解。日本丰田汽车是如何做到自动化流水线生产的,本质上是把产品xBOM…

BufferedOutputStream,BufferedInputStream是字节流,对象处理流,序列化,输入输出流,转换流

BufferedInputStream字节输入流 意思就是InputStream类及其子类都能以参数的形式放到BufferedInputStream构造器的参数 package com.hspedu.outputstream_;import java.io.*;/*** author 韩顺平* version 1.0* 演示使用BufferedOutputStream 和 BufferedInputStream使用* 使用他…

数据挖掘:心脏病预测(测评指标;EDA)

目录 一、前期准备 二、实战演练 2.1分类指标评价计算示例 2.2数据探索性分析(EDA) 2.2.1 导入函数工具箱 2.2.2 查看数据信息等相关数据 判断数据缺失和异常 数字特征相互之间的关系可视化 类别特征分析(箱图,小提琴图&am…

ios客户端学习笔记(五):学习Swift的关键字和容易弄混的符号

1. 关键字 下面是Swift语言中的常见关键字及其说明和代码应用实例: class:定义一个类,用于封装一组相关的属性和方法。 示例代码: class Person {var name: String ""var age: Int 0 }struct:定义一个…

网络安全与攻防-常见网络安全攻防

目录 攻击手段&防御策略 阻断服务攻击(DoS) 地址解析欺骗(ARP攻击)(Address Resolution Protocol spoofing) 跨站脚本攻击(XSS) SQL注入 跨站请求伪造(csrf&am…