使用[key:string]时,打字稿编译错误

时间:2020-05-13 07:39:21

标签: typescript compiler-errors

在我的项目中,我遇到了ts编译错误,然后进行了一个简单的演示: 这样的代码

    interface ITest {
    getAddress: Function,
    [keys: string]: {
        name: string
        // [keys: string]: string //open this
     }
    }

    const person : ITest = {
    john: {
        name: "john"
    },
    getAddress: ()=>{
        //....
      }
    }

我工作正常,但是当我重新打开提交行时, ts compile提示错误:

 couldn't assign () => void to { [keys: string]: string; name: string; }

我不知道为什么出现此错误或。但我必须这样使用。

我认为这是一个打字稿编译错误?还是[keys:string]列表应该是同一类型?

我的打字稿版本:3.8.3

2 个答案:

答案 0 :(得分:0)

嗯,不,这不是bug。您取消注释的行会强制所有属性将每个属性都设为字符串。

wp.data.dispatch( 'core/block-editor' ).insertBlocks( newBlock )

答案 1 :(得分:0)

很抱歉长时间回复... 我有一定的道理。 Function has its name

所以当我编码类似

const person : ITest = {
john: {
    name: "john"
},
getAddress: ()=>{
    //....
  }
}

我没有任何错误...

像@Eldar一样,[key: string]: string类型使任何键成为相同类型。