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

web:ts的字符串string和String

简介

string和String简介。

  • string是TypeScript的原始类型标注,与number/boolean同级

  • String是JavaScript运行时内置对象的构造函数类型,在类型标注领域string更常用也更安全,而String几乎只用在需要描述包装对象实例的场景(虽然这种场景极少)。

string(小写)- 原始类型​

  • 本质​​:TypeScript 的基本类型(Primitive Type),对应 JavaScript 的原始字符串值。

  • ​用法​​:声明变量、函数参数或返回值为原始字符串类型。

let name: string = "Alice";        // ✅ 推荐用法function greet(msg: string): string {return msg;
}
  • 特点​​:
  • 直接存储字符串值(如 "hello")。
  • 不能使用 new实例化(new string会报错)。

String(大写)-包装对象类型​

  • 本质​​:JavaScript 的内置 String对象的类型声明(构造函数)。在 TypeScript 中属于​​接口类型​​,描述字符串包装对象的属性和方法。

  • ​用法​​:

    • 极少需要显式使用 String作为类型注解,但可以调用其静态方法(如 String.fromCharCode())。

    • 错误示例(避免这样用)

let objStr: String = new String("Bob"); // ❌ 不推荐:创建了冗余的包装对象
  • ​特点​​:

    • 描述字符串包装对象实例(通过 new String()创建)。

    • 包含 charAt()substring()等方法的类型定义(原始 string也可调用这些方法,因为 JS 会自动装箱)。

总结

string(小写)

String(大写)

​类型​

原始类型 (Primitive)

包装对象接口 (Interface)

​来源​

TS 基础类型

JS 内置对象的类型声明

​用法​

声明原始字符串变量、返回值

描述 String对象实例

​实例化​

new string()​无效​

new String()可创建对象

注意事项

​不要混淆赋值​

// ✅ 正确
let s1: string = "text";// ✅ 语法正确(TS 允许),但不推荐(隐式装箱)
let s2: String = "text";// ❌ 错误:类型不匹配
let s3: string = new String("text");

最佳实践

  • ​始终使用 string​:99% 的场景应声明原始字符串类型(变量、函数参数/返回值)。

  • ​避免 new String()​:创建包装对象会浪费内存,且容易引发比较错误。

  • ​理解自动装箱​​:原始类型调用方法时(如 "text".length),JS 引擎会自动转为 String对象,无需手动操作。

http://www.dtcms.com/a/314998.html

相关文章:

  • Flutter简单讲解
  • ctfshow:pwn85(高级ROP 64 位 Partial-RELRO)、pwn141
  • 内网应用如何实现外网访问?常见方案和简单便捷通用方法步骤
  • SpringBoot格式化数据库表格字段时间戳
  • 华莱士“武”动新章:武林外传IP赋能,开启品牌破圈之旅!
  • XXE漏洞原理及利用
  • VBA-Excel图片下载到本地文件夹
  • 机器学习05——正则化与逻辑回归
  • 大模型LLM介绍
  • 《 java 随想录》| LeetCode二叉树高频算法题
  • WPS2025(官方版)下载与安装教程
  • 一命速通Docker安装+镜像源配置
  • 【node】如何开发一个生成token的接口
  • Disruptor核心:Sequencer解析
  • 软件打包前进行文件去重
  • 正则表达式全解析:从基础到实战(附 Python re 模块用法)
  • 基于知识图谱增强的RAG系统阅读笔记(二)向量相似性搜索与混合搜索
  • ESDocValues机制
  • GEM_ 迈向通用LLM智能体训练新纪元
  • Java 后端 + JavaScript 前端 实现按钮级别权限控制的解决方案
  • HTTP、WebSocket、TCP、Kafka等通讯渠道对比详解
  • JavaScript案例(乘法答题游戏)
  • Claude Code六周回顾
  • 关键字 - 第一讲
  • 【Redis】安装Redis,通用命令
  • dubbo——远程服务调用
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 解决MySQL删除/var/lib/mysql下的所有文件后无法启动的问题
  • SpringBoot基础复习
  • SwiftUI ios开发中的 MVVM 架构深度解析与最佳实践