【发布时间】:2016-11-22 03:51:07
【问题描述】:
此代码在 TypeScript 1.8 之前编译,现在不再编译。
//[in app3.ts]
declare module App {
export interface Iaa {
nb: number;
}
export interface Ibb extends Iaa {
title: string;
}
}
和
//[in app4.ts:]
/// <reference path="app3.ts"/>
module App {
"use strict";
export interface Iaa extends aa {
}
export class aa {
constructor() {
}
test(): void {
var that: Iaa = <Iaa>this; //Error
}
}
export interface Ibb extends bb{
}
export class bb extends aa {
constructor() {
super();
}
test(): void {
var that: Ibb = <Ibb>this;//Error
that.nb = 10;
}
}
}
这是错误: app4.ts(15,29):错误 TS2352:类型“this”和类型“Iaa”都不能分配给另一个。 类型“aa”不可分配给类型“Iaa”。 类型“aa”中缺少属性“nb”。
谁能解释一下为什么“nb”和“title”在 app3.ts 中时未定义? 谢谢
【问题讨论】:
-
为什么接口扩展类?
-
来自官方文档:“当接口类型扩展类类型时,它继承类的成员而不是它们的实现”
-
所以错误几乎可以解释自己 -
aa中没有属性nb -
我的问题是为什么这段代码在 1.8 之前编译。
-
看起来是个错误
标签: typescript interface