为什么我不能在Typescript中扩展'any'?

Ric*_*ard 9 typescript typescript1.8

我想为使用外部库的类创建一个占位符接口.所以我做了:

export interface IDatabaseModel extends any
{
}
Run Code Online (Sandbox Code Playgroud)

我宁愿这样做并稍后添加方法(例如findAll()),而不是将我的所有类标记为'any',并且必须在以后使用'IDatabaseModel'手动搜索并替换数百个特定位置中的'any'.

但编译器抱怨它找不到'任何'.

我究竟做错了什么?

Pal*_*leo 10

带别名 any

我想创建一个占位符界面

使用别名:

type IDatabaseModel = any;
Run Code Online (Sandbox Code Playgroud)

或者带索引签名[2017年8月编辑]

从TypeScript 2.2开始,obj.propName允许使用索引签名的属性访问语法:

interface AnyProperties {
    [prop: string]: any
}

type MyType = AnyProperties & {
    findAll(): string[]
}

let a: MyType
a.findAll() // OK, with autocomplete
a.abc = 12 // OK, but no autocomplete
Run Code Online (Sandbox Code Playgroud)


Dav*_*ret 1

类型any是选择退出类型检查的一种方式,因此在进行类型检查的环境中使用它是没有意义的。

您可以在使用方法时将它们添加到接口中:

export interface IDatabaseModel
{
    findAll(): any;
}
Run Code Online (Sandbox Code Playgroud)

编辑:同时查看Paleo's 答案以使用类型别名。