请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

普通对象

声明一个普通对象
const person: object = {}
为对象添加一个新的属性
person.name = ‘’

这样类型检测会报错

目前是以下这样写
interface PlainObject {
[propsName: string]: any
}

const person: PlainObject = {}
person.name = ‘’

这样写虽然不报错,但是感觉怪怪的,有什么好办法吗

正在回答 回答被采纳积分+3

2回答

ustbhuangyi 2020-02-25 10:48:11

https://img1.sycdn.imooc.com/szimg/5e548ae7096753f318101564.jpg
类似课程这种搞法,通过 Object.create(null) 去创建一个空对象,其实是因为它的返回值是 any 类型。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕工程1298299 #1
    这样的 那如果是以函数参数的形式呢 直接定义参数为 any 类型吗
    回复 有任何疑惑可以回复我~ 2020-02-25 10:58:06
  • ustbhuangyi 回复 提问者 慕工程1298299 #2
    可以的
    回复 有任何疑惑可以回复我~ 2020-02-25 11:13:22
ustbhuangyi 2020-02-25 10:09:26

下面你用了索引类型,它允许 key 是一个 string,值是任意类型,所以你这么写肯定不会报错。
我不太明白你的目的是什么呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕工程1298299 #1
    merge(config: any) {
        let options: object = {}
        for (let key in config) {
          if (strat.some(item => (item === key))) {
            options[key] = config[key]
          }
        }
        return options
      }
    
    我经常会遇到这样的场景,上面的option对象定义新属性时是会报错的。一般这样的情况是怎么处理的呢
    回复 有任何疑惑可以回复我~ 2020-02-25 10:40:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信