TypeScript

Ts 索引签名

2024-05-07  本文已影响0人  逗婆苍穹
interface T {
    [index:number]:string
}
let arr:T = ["1","2",3] // 第三项:不能将类型“number”分配给类型“string”
let obj:T = {
    0:'0', // ok
    a:'1' // 对象字面量只能指定已知属性,并且“a”不在类型“T”中
}

interface T {
    [key:string]:number
}
let obj:T = {
    "name":100,
    "age":"200"  // 不能将类型“string”分配给类型“number”
}
const symbol = Symbol("key");
interface A {
  [y: string]: string;
}
let a: A = {
  x: "1", // ok
  symbol: "1",  // ok
  1: "1",  // ok
};
interface B {
  [x: number]: string;
}
let b: B = {
  x:'1', //  对象字面量只能指定已知属性,并且“x”不在类型“B”中
  symbol :'1',  //  对象字面量只能指定已知属性,并且“symbol ”不在类型“B”中
  1: "1",  // ok
};
interface T {
    name: string; // Ok
    age?: number; // 类型“number | undefined”的属性“age”不能赋给“string”索引类型“string”
    sex?: undefined; // OK
    [propName: string]: string | undefined;
}
interface Animal {
  name: string;
}
interface Dog extends Animal {
  breed: string;
}

interface NotOkay {
  [x: string]: Dog;
  [x: number]: Animal; // Error
}

interface Okay {
  [x: string]: Animal;
  [x: number]: Dog; // OK
}
上一篇 下一篇

猜你喜欢

热点阅读