TypeScript 中的数字类型用于表示整数和浮点数,与 JavaScript 一样,所有数字都是浮点数。
let integer: number = 10
let float: number = 3.14
let negative: number = -5
console.log(integer) // 10
console.log(float) // 3.14
console.log(negative) // -5
TypeScript 支持多种进制:
let decimal: number = 10 // 十进制
let hex: number = 0xa // 十六进制
let binary: number = 0b1010 // 二进制
let octal: number = 0o12 // 八进制
console.log(decimal) // 10
console.log(hex) // 10
console.log(binary) // 10
console.log(octal) // 10
let big: number = 1e6 // 1000000
let small: number = 1e-3 // 0.001
console.log(big) // 1000000
console.log(small) // 0.001
let notANumber: number = NaN
console.log(NaN === NaN) // false
console.log(Number.isNaN(NaN)) // true
let infinite: number = Infinity
let negativeInfinite: number = -Infinity
console.log(1 / 0) // Infinity
console.log(-1 / 0) // -Infinity
let age = 25 // 推断为 number
let price = 99.99 // 推断为 number
let count = 0xFF // 推断为 number
let a: number = 10
let b: number = 3
console.log(a + b) // 13 - 加法
console.log(a - b) // 7 - 减法
console.log(a * b) // 30 - 乘法
console.log(a / b) // 3.333... - 除法
console.log(a % b) // 1 - 取余
console.log(a ** b) // 1000 - 幂运算
let value: number = 3.7
console.log(Math.floor(value)) // 3 - 向下取整
console.log(Math.ceil(value)) // 4 - 向上取整
console.log(Math.round(value)) // 4 - 四舍五入
console.log(Math.trunc(value)) // 3 - 截断小数
console.log(Math.abs(-5)) // 5 - 绝对值
console.log(Math.max(1, 2, 3)) // 3 - 最大值
console.log(Math.min(1, 2, 3)) // 1 - 最小值
console.log(Math.random()) // 0-1 随机数
console.log(Math.sqrt(16)) // 4 - 平方根
interface Product {
name: string
price: number
quantity: number
}
function calculateTotal(products: Product[]): number {
return products.reduce((total, item) => {
return total + item.price * item.quantity
}, 0)
}
const cart: Product[] = [
{ name: "苹果", price: 5.5, quantity: 2 },
{ name: "香蕉", price: 3.0, quantity: 3 }
]
console.log(calculateTotal(cart)) // 20
function clamp(value: number, min: number, max: number): number {
return Math.min(Math.max(value, min), max)
}
console.log(clamp(5, 0, 10)) // 5
console.log(clamp(-5, 0, 10)) // 0
console.log(clamp(15, 0, 10)) // 10
function randomInt(min: number, max: number): number {
return Math.floor(Math.random() * (max - min + 1)) + min
}
console.log(randomInt(1, 100)) // 1-100 随机整数
let result = 0.1 + 0.2
console.log(result) // 0.30000000000000004
console.log(result === 0.3) // false
// 解决方案:使用 toFixed
console.log(result.toFixed(2)) // "0.30"
console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991
console.log(Number.MIN_SAFE_INTEGER) // -9007199254740991
// 检查是否安全
console.log(Number.isSafeInteger(9007199254740991)) // true
console.log(Number.isSafeInteger(9007199254740992)) // false
let correct: number = 10
let wrong: Number = new Number(10) // 不推荐
let str = "123"
let num = Number(str) // 123
let parsed = parseInt(str) // 123
let float = parseFloat("3.14") // 3.14
let backToString = num.toString() // "123"