javascript - sampleDocument 不可分配给类型 T
问题描述
我是 TypeScript 的新手,并试图用它来掌握 OOP。
我有以下代码:
import {ReadOnlyDocument} from "../../docs/read-only.document";
import {IReadOnlyRepository} from "./abstract/Iread-only.repository";
import {sampleDocument} from "../../docs/sampleDocument";
export abstract class ReadOnlyRepository<T extends ReadOnlyDocument> implements IReadOnlyRepository<T> {
public getById(id: string): T {
let sample: sampleDocument = new sampleDocument('',
new Date(),
'',
new Date(),
'');
/*Line of code that brings the error.*/
return sample;
}
}
但是,我不断收到错误sampleDocument
不能分配给类型 T,我似乎无法弄清楚出了什么问题。任何帮助将非常感激。
我在下面添加了其他可能相关的代码。
import {ReadOnlyDocument} from "./read-only.document";
export class sampleDocument extends ReadOnlyDocument{
}
export abstract class Document {
constructor(
public id: string,
public createdDate: Date,
public createdBy: string,
public updatedDate: Date,
public updatedBy: string
) { }
}
import { Document } from './abs/document'
export abstract class ReadOnlyDocument extends Document{
}
import {ReadOnlyDocument} from "../../../docs/read-only.document";
import { IRepository } from "./Irepository";
export interface IReadOnlyRepository<T extends ReadOnlyDocument> extends IRepository<T> {
getById(id: string): T;
}
import {Document} from "../../../domain/documents/abstract/document";
export interface IRepository<T extends Document> {
}
解决方案
T
是 的任何子类型,ReadOnlyDocument
因此例如,如果您有 aReadOnlyPDF
并且扩展了ReadOnlyDocument
,那么您可以构造 a ReadOnlyRepository<ReadOnlyPDF>
,并且您希望它ReadOnlyPDF
从中返回 a getById
,但它只返回 a ReadOnlyDocument
。
推荐阅读
- amazon-web-services - AWS 负载均衡器路由请求
- asp.net-mvc - asp net core用href激活控制器和动作?
- php - 从我上一个帖子中获取帖子 ID
- php - 登录不适用于河豚散列
- amazon-redshift - Redshift中的不同时间戳
- java-8 - 检查 Instant 现在是否在 java.time.Period / Duration 期间发生
- javascript - Azure 服务总线未收到消息
- ms-access - Access - 有没有办法覆盖 MS Access 数据库的旧数据
- jhipster - 如何在 Jhipster 中定义和对象集合?
- excel - 如何使用 Excel 作为数据源并在 UIPath 中执行 SQL 查询