布尔类型是最简单的数据类型,只有
true和false两个值。
let isDone: boolean = false
let isActive: boolean = true
console.log(isDone) // false
console.log(isActive) // true
TypeScript 会根据初始值自动推断类型:
let isComplete = false // 推断为 boolean
let hasPermission = true // 推断为 boolean
let isLoggedIn: boolean = false
if (isLoggedIn) {
console.log("用户已登录")
} else {
console.log("请先登录")
}
function isAdult(age: number): boolean {
return age >= 18
}
console.log(isAdult(20)) // true
console.log(isAdult(15)) // false
interface User {
name: string
isActive: boolean
isAdmin: boolean
}
const user: User = {
name: "张三",
isActive: true,
isAdmin: false
}
interface Settings {
darkMode: boolean
notifications: boolean
autoSave: boolean
}
const settings: Settings = {
darkMode: true,
notifications: false,
autoSave: true
}
let a: boolean = true
let b: boolean = false
console.log(a && b) // false - 逻辑与
console.log(a || b) // true - 逻辑或
console.log(!a) // false - 逻辑非
let value1 = Boolean(1) // true
let value2 = Boolean(0) // false
let value3 = Boolean("") // false
let value4 = Boolean("hello") // true
let value5 = Boolean(null) // false
let value6 = Boolean(undefined) // false
let value = "hello"
let isTrue = !!value // true
let empty = ""
let isFalse = !!empty // false
let isDone: boolean = false // 正确:原始类型
let isComplete: Boolean = true // 不推荐:Boolean 对象
let wrong: boolean = new Boolean(1) // 错误!
let value: boolean = false
if (value === false) {
console.log("明确比较更安全")
}
if (!value) {
console.log("隐式转换也可以")
}
class FeatureToggle {
private features: Map<string, boolean> = new Map()
enable(feature: string): void {
this.features.set(feature, true)
}
disable(feature: string): void {
this.features.set(feature, false)
}
isEnabled(feature: string): boolean {
return this.features.get(feature) ?? false
}
}
const toggle = new FeatureToggle()
toggle.enable("darkMode")
toggle.enable("betaFeatures")
console.log(toggle.isEnabled("darkMode")) // true
console.log(toggle.isEnabled("notifications")) // false
function process(value: boolean | string): string {
if (typeof value === "boolean") {
return value ? "是" : "否"
}
return value
}
console.log(process(true)) // "是"
console.log(process("hello")) // "hello"