字符串类型用于表示文本数据,是开发中最常用的类型之一。
let name: string = "张三"
let greeting: string = '你好'
let message: string = `欢迎`
console.log(name) // 张三
console.log(greeting) // 你好
console.log(message) // 欢迎
TypeScript 支持三种引号:
let double: string = "双引号"
let single: string = '单引号'
let template: string = `模板字符串`
模板字符串支持多行文本和变量嵌入:
let name: string = "张三"
let age: number = 25
let message: string = `你好,${name}!
你今年 ${age} 岁了。`
console.log(message)
// 你好,张三!
// 你今年 25 岁了。
let a: number = 10
let b: number = 20
console.log(`${a} + ${b} = ${a + b}`) // 10 + 20 = 30
function highlight(strings: TemplateStringsArray, ...values: any[]): string {
return strings.reduce((result, str, i) => {
const value = values[i] ? `<strong>${values[i]}</strong>` : ''
return result + str + value
}, '')
}
const name = "张三"
const age = 25
console.log(highlight`姓名:${name},年龄:${age}`)
// 姓名:<strong>张三</strong>,年龄:<strong>25</strong>
let str: string = "Hello, TypeScript!"
console.log(str.indexOf("Type")) // 7
console.log(str.includes("Script")) // true
console.log(str.startsWith("Hello")) // true
console.log(str.endsWith("!")) // true
let str: string = "Hello, World!"
console.log(str.substring(0, 5)) // Hello
console.log(str.slice(7, 12)) // World
console.log(str.slice(-6)) // World!
let str: string = "apple,banana,orange"
let fruits: string[] = str.split(",")
console.log(fruits) // ["apple", "banana", "orange"]
let joined: string = fruits.join(" | ")
console.log(joined) // apple | banana | orange
let str: string = "Hello World"
console.log(str.toLowerCase()) // hello world
console.log(str.toUpperCase()) // HELLO WORLD
let str: string = " hello "
console.log(str.trim()) // "hello"
console.log(str.trimStart()) // "hello "
console.log(str.trimEnd()) // " hello"
let str: string = "hello world"
console.log(str.replace("world", "TypeScript")) // hello TypeScript
console.log(str.replace(/o/g, "0")) // hell0 w0rld
let str: string = "abc"
console.log(str.repeat(3)) // abcabcabc
console.log("5".padStart(3, "0")) // 005
console.log("5".padEnd(3, "0")) // 500
let name = "张三" // 推断为 string
let greeting = `你好` // 推断为 string
interface User {
firstName: string
lastName: string
email: string
}
function formatUser(user: User): string {
return `${user.lastName}${user.firstName} <${user.email}>`
}
const user: User = {
firstName: "三",
lastName: "张",
email: "zhangsan@example.com"
}
console.log(formatUser(user)) // 张三 <zhangsan@example.com>
function maskEmail(email: string): string {
const [name, domain] = email.split("@")
const maskedName = name.slice(0, 2) + "***"
return `${maskedName}@${domain}`
}
console.log(maskEmail("zhangsan@example.com")) // zh***@example.com
function generateId(prefix: string = ""): string {
const timestamp = Date.now().toString(36)
const random = Math.random().toString(36).slice(2, 8)
return `${prefix}${timestamp}${random}`
}
console.log(generateId("user_")) // user_lz1abc123xyz
function capitalize(str: string): string {
return str.charAt(0).toUpperCase() + str.slice(1)
}
console.log(capitalize("hello")) // Hello
字符串是不可变的:
let str: string = "hello"
str[0] = "H" // 无效,不会改变原字符串
let newStr = str.toUpperCase() // 创建新字符串
console.log(newStr) // HELLO
let correct: string = "hello"
let wrong: String = new String("hello") // 不推荐
let quote: string = '他说:"你好"'
let newline: string = "第一行\n第二行"
let tab: string = "姓名\t年龄"
let backslash: string = "路径:C:\\Users"
let num: number = 123
let bool: boolean = true
console.log(num.toString()) // "123"
console.log(String(num)) // "123"
console.log(String(bool)) // "true"