值类型之Hello翻身当类型了

值类型

TypeScript 规定,单个值也是一种类型,称为“值类型”。

let Zakun: "hello";Zakun = "hello"; // 正确
// Zakun = "world"; // 报错

上面示例中,变量Zakun的类型是字符串hello,导致它只能赋值为这个字符串,赋值为其他字符串就会报错

TypeScript 推断类型时,遇到const命令声明的变量,如果代码里面没有注明类型,就会推断该变量是值类型。

// x 的类型是 "https"
const x = 'https';// y 的类型是 string
const y:string = 'https';

上面示例中,变量xconst命令声明的,TypeScript 就会推断它的类型是值https,而不是string类型。

这样推断是合理的,因为const命令声明的变量,一旦声明就不能改变,相当于常量。值类型就意味着不能赋为其他值。

注意,const命令声明的变量,如果赋值为对象,并不会推断为值类型。

// x 的类型是 { foo: number }
const x = { foo: 1 };

上面示例中,变量x没有被推断为值类型,而是推断属性foo的类型是number。这是因为 JavaScript 里面,const变量赋值为对象时,属性值是可以改变的。

值类型可能会出现一些很奇怪的报错。

const x:5 = 4 + 1; // 报错

上面示例中,等号左侧的类型是数值5,等号右侧4 + 1的类型,TypeScript 推测为number。由于5number的子类型,number5的父类型,父类型不能赋值给子类型,所以报错了

但是,反过来是可以的,子类型可以赋值给父类型。

let x:5 = 5;
let y:number = 4 + 1;x = y; // 报错
y = x; // 正确

上面示例中,变量x属于子类型,变量y属于父类型。子类型x不能赋值为父类型y,但是反过来是可以的。

如果一定要让子类型可以赋值为父类型的值,就要用到类型断言

const x:5 = (4 + 1) as 5; // 正确

上面示例中,在4 + 1后面加上as 5,就是告诉编译器,可以把4 + 1的类型视为值类型5,这样就不会报错了。

只包含单个值的值类型,用处不大。实际开发中,往往将多个值结合,作为联合类型使用。

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

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

相关文章

Midjourney提示词终极指南(完整版)

在这篇博客中,我们深入研究了使用提示的艺术,以利用Midjourney的AI功能的力量。我们将探索各种技术,以创建个性化和迷人的图像,将你的创意想法转变为令人惊叹的视觉杰作。 1. 了解提示词 提示是简短的文字描述或关键词&#xff…

基于Spring+Vue的前后端分离的计算器

麻雀虽小,五脏俱全 需求分析 表达式求值 支持加减乘除四则运算、支持高精度 获取日志 Api文档定义 前后端分离,人不分离 通过Apifox定义接口细节,协调前后端开发工作。 软件架构设计 Spring-MVC 把软件系统分为三个基本部分:模…

跨国大文件传输需要哪些方面?怎么实现数据快速传输?

跨国大文件传输涉及到许多方面,包括网络速度、安全性、可靠性和法律合规性等。 以下是跨国大文件传输时需要考虑的一些重要方面: 高速稳定的网络连接:确保有足够的带宽和稳定的网络连接以支持大文件的快速传输。这可能需要考虑到跨国网络的延…

岩土工程乙级资质下的风险管理与责任需求

1. 技术风险管理 地质勘察准确性:确保勘察数据的准确性和完整性,避免因地质误判导致的设计错误或施工事故。技术方案评估:合理评估岩土工程方案的可行性,包括支护、加固、地基处理等,预防技术失误带来的风险。新技术应…

数字孪生火电厂:传统能源的数字化转型

通过图扑自主研发的产品 HT for Web ,采用可视化与数字孪生技术,打造多样化设计风格和业务视角下的火电厂数字孪生方案。为智慧电厂综合“一张图”管理提供了上层展示技术支撑,助力企业增强对火电厂的信息化和数字化管理水平。

win11安装pycuda的一点点问题

问题:ERROR: Failed building wheel for pycuda C:\Users\97160\AppData\Local\Temp\pip-install-oi8pc0pg\pycuda_49ea4802a21a4336a69368c192f9cfce\src\cpp\cuda.hpp(23): fatal error C1083: 无法打开包括文件: “cudaProfiler.h”: No such file or directoryC…

用android如何实现计算机计算功能

一.新建一个项目 步骤&#xff1a; 1.新建项目 2.选择 二.用户界面构建 找到项目的res的下面layout里面的activity.xml文件进行约束布局界面构建。 activity.xml代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.c…

Web前端进阶课程:深度剖析与全面突破

Web前端进阶课程&#xff1a;深度剖析与全面突破 在数字化浪潮席卷全球的今天&#xff0c;Web前端技术作为连接用户与互联网世界的桥梁&#xff0c;其重要性不言而喻。为了更好地满足市场对前端技能的高要求&#xff0c;Web前端进阶课程应运而生。本文将从四个方面、五个方面、…

电脑屏幕录制怎么录制?这7个录制屏幕的技巧值得一试!

电脑屏幕录制怎么录制&#xff1f;屏幕录制是什么? 简单地说&#xff0c;电脑屏幕录制就是在你的设备屏幕上录制视频。它可以捕捉屏幕上正在发生的事情&#xff0c;并让你与其他人分享。记录电脑、手机或笔记本电脑屏幕的原因有很多&#xff1a; 1. 一个简单的屏幕录制可以用…

STM32项目分享:智能大棚/智慧农业系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.co…

超全Midjourney自学教程,怒码1万3千字!这是我见过最良心的教程啦!

前段时间&#xff0c;后台有网友私信我&#xff0c;说想跟我一起学AI~当时一边开心一边惶恐&#xff0c;满足于被人看到自己的努力、又担心自己是不是教不好别人&#xff0c;毕竟我自己也是业余时间边学边发的那种~ 不过&#xff0c;我还是会继续搬运或整理一些我认为值得记录…

Spark学习——不同模式下执行脚本

举个简单的例子&#xff1a;使用spark官方用例"取pi值" 一、local模式 进入spark目录执行后台命令&#xff1a; bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[*] \ ./examples/jars/spark-examples_2.12-3.2.1.jar \ 10运行结…

七、IP路由原理和路由引入

目录 一、IP路由原理 二、路由引入 2.1、双点双向路由引入 2.2、路由回灌 三、路由策略与路由控制 路由匹配工具&#xff08;规则&#xff09; ACL IP前缀列表 路由控制工具&#xff08;控制&#xff09; 策略工具1 策略工具2 搭配组合 组…

理解Es的DSL语法(二):聚合

前一篇已经系统介绍过查询语法&#xff0c;详细可直接看上一篇文章&#xff08;理解DSL语法&#xff08;一&#xff09;&#xff09;&#xff0c;本篇主要介绍DSL中的另一部分&#xff1a;聚合 理解Es中的聚合 虽然Elasticsearch 是一个基于 Lucene 的搜索引擎&#xff0c;但…

LaTeX 学习 第2节 数学结构

----用教授的方式学习 目录 2.1 上标与下标 2.2 上下画线与花括号 2.3 分式 2.4 根式 2.5 矩阵 ​​​​​​​LaTex安装包&#xff1a;https://download.csdn.net/download/weixin_38135241/89416392 LaTex- windows安装包&#xff1a;https://download.csdn.net/down…

SpringBoot3 整合 Mybatis 完整版

本文记录一下完整的 SpringBoot3 整合 Mybatis 的步骤。 只要按照本步骤来操作&#xff0c;整合完成后就可以正常使用。1. 添加数据库驱动依赖 以 MySQL 为例。 当不指定 依赖版本的时候&#xff0c;会 由 springboot 自动管理。 <dependency><groupId>com.mysql&l…

友元函数(friend function)的原理、特点、使用方法和注意点

友元函数&#xff08;friend function&#xff09;是C中一种特殊的函数&#xff0c;它可以访问类的私有和保护成员。尽管它不是类的成员函数&#xff0c;但它能通过声明为友元来获得对类成员的访问权限。以下是友元函数的原理、特点、使用方法和注意点&#xff1a; 原理 友元…

git原理解释,windows 10 / ubuntu 24.04 安装使用 github

git的原理 git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统&#xff0c;掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢&#xff1f;因为Linux系统由全世界的程序员协作维护&#xff0c;对源代码文件的版本控制管理的需求…

yolo案例项目学习记录

box-ocr: 监控摄像头视频流实时计数传送带的货物&#xff0c;并提取货物上面文字或二维码 1.本地环境&#xff1a; 1.1torch、torchvison、torchaudio版本对应关系 PyTorch中torch、torchvision、torchaudio、torchtext版本对应关系_torch2.0.1对应的torchvision-CSDN博客 1…

Python 全栈系列252 一些小计划

说明 最近整体进展还比较顺利&#xff0c;不过也因为这样&#xff0c;好几个线头怎么继续平衡和推进需要稍微捋一下。 内容 按重要|紧急方法来看&#xff0c;线头1是重要且紧急的&#xff0c;QTV200也算重要且紧急&#xff0c;其他都算是重要不紧急。 线头1: 数据清洗 虽然…