let o: object = { x: 3 } o.x = 2
刚开始系统学习ts 不理解为什么ts要如此设计 有大佬能回答一下嘛
let o: {x: number} = { x: 3 } o.x = 2
你应该这么写才对 类型 我理解是对变量的描述
你给声明成Object类型了,原生Object类型肯定没有你的属性,,要不你就声明成{x: number}, 要不就不声明让ts自己推断,,你这想把二者结合自相矛盾,没法判断你赋值的是否合法了
楼上说的没错,你想声明一个属性不限的Object可以用:
Object
const o: Record<string, any> = {}; o.x = 2;
@ganshiqingyuan 明白了 object仅代表{}
@nigel Record是声明的类型嘛 ? <string,any>又是代表什么意思 刚开始学习ts并不懂
@zhsonga Record是一个UtilityType,类似于语法糖,相当于:
const o: { [key: string]: any; } = {}; o.x = 2;
尖括号里第一个string表示对象是key是string类型,any表示值是any类型 其他官方的UtilityTypes参考: https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkt
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
你应该这么写才对 类型 我理解是对变量的描述
你给声明成Object类型了,原生Object类型肯定没有你的属性,,要不你就声明成{x: number}, 要不就不声明让ts自己推断,,你这想把二者结合自相矛盾,没法判断你赋值的是否合法了
楼上说的没错,你想声明一个属性不限的
Object可以用:@ganshiqingyuan 明白了 object仅代表{}
@nigel Record是声明的类型嘛 ? <string,any>又是代表什么意思 刚开始学习ts并不懂
@zhsonga Record是一个UtilityType,类似于语法糖,相当于:
尖括号里第一个string表示对象是key是string类型,any表示值是any类型 其他官方的UtilityTypes参考: https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkt