首页 > 解决方案 > 不能使用带括号的可索引类型

问题描述

// EX 1
interface Animal {
  [dwdwdwd: number]: string;
}
let myArr : Animal = ["Joy", "Joy2"];

console.log("EX1 : " + myArr[1]); // Joy2

// EX 2
interface States {
    [state: string]: boolean;
}
let myArr2: States = {'enabled': true, 'maximized':false};
console.log("EX2 : " + myArr2['maximized']); // false

// EX 3
interface Animal2 {
  (props: { [key: string]: any }): boolean;
}

const test = {props : {'enabled':false}}; // I don't think this is correct of putting variable

let myArr3 : Animal2 = test; // compile error

我想制作make EX 3,以便它使用“接口Animal2”,但我不知道如何像EX1和EX2中所示的方式使用它。

谁能给我一个使用EX3的例子?和 console.log 它的任何变量。非常感谢你。

标签: typescript

解决方案


看起来您正在尝试为函数创建接口:

interface Animal2 {
    (props: {[key: string]: any}): boolean;
}

let isPeterPan: Animal2 = (props: {name: string, lastName: string}) => props.name === "peter" && props.lastName === "pan";

console.log(isPeterPan({name: "peter", lastName: "parker"})); // false
console.log(isPeterPan({name: "peter", lastName: "pan"})); // true

推荐阅读