TypeScript给接口添加任意属性

Posted Felix_Openmind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript给接口添加任意属性相关的知识,希望对你有一定的参考价值。

一个接口允许存在任意的属性

interface IPerson 
  name: string;
  age: number;
  userBio?: string;
  [propName: string]: any;


let wangzz: IPerson = 
  name: \'wangzz\',
  age: 24,
  userBio: \'万事胜意\',
  gender: \'male\' // 任意属性取string类型的值


一旦定义任意属性,确定属性和可选属性的类型都必须时其类型的子类型

interface Person 
    name: string;
    age?: number;
    [propName: string]: string;


let tom: Person = 
    name: \'Tom\',
    age: 25,
    gender: \'male\'
;

// index.ts(3,5): error TS2411: Property \'age\' of type \'number\' is not assignable to string index type \'string\'.
// index.ts(7,5): error TS2322: Type \' [x: string]: string | number; name: string; age: number; gender: string; \' is not assignable to type \'Person\'.
//   Index signatures are incompatible.
//     Type \'string | number\' is not assignable to type \'string\'.
//       Type \'number\' is not assignable to type \'string\'.

以上是关于TypeScript给接口添加任意属性的主要内容,如果未能解决你的问题,请参考以下文章

Typescript Interfaces(接口)添加任意key值/内容

TypeScript接口

从0开始的TypeScriptの四:接口Interfaces · 上

从0开始的TypeScriptの四:接口Interfaces · 上

Typescript中括号和keyof的几个特殊用法

Typescript中括号和keyof的几个特殊用法