angular - 有没有办法防止 Typescript 中的类型变窄
问题描述
有没有办法防止子类定义覆盖基类?或者防止类型缩小?通过编译器错误或 linting 警告。
背景
我正在开发一个包含数十个实体的 Angular 项目。每个实体都映射到一个 SQL 表,但也可以在到达客户端之前包含额外的自定义属性。
现在,每个实体都有两个类,一个是从 SQL 表列类型生成的基类,另一个是扩展基类并包含自定义属性的可用类。
该项目正在使用--strictNullChecks
问题
问题是打字稿允许类型缩小,所以如果Comments: string | null
基类上有一个属性,那么子类可以拥有Comments: string
而不会导致错误。但实际值可以为空,所以我不想意外缩小它并让编译器认为它不可为空。
例子
// !!!DO NOT MODIFY!!!
export abstract class CountryEntityBase {
/** Max Length: 3 */
Code: string;
/** Max Length: 3 */
Country_ID: string;
/** Max Length: 50 */
Description: string | null;
IsActive: boolean;
SortOrder: number | null;
}
export class CountryEntity extends CountryEntityBase {
$id: string;
$type: string;
CreatedBy: string;
CreatedDate: Date;
Description: string; // I want to prevent this
}
解决方案
推荐阅读
- spring - 自定义请求/响应对象中的 MultipartFile
- c# - System.Text.Json:当 json 配置具有通用 JsonStringEnumConverter 时,如何将单个枚举序列化为数字
- javascript - mongodb与nodejs中的多阶段关系
- .net - Azure.Messaging.ServiceBus 无法配置 TransportType
- node.js - wss nodejs如何过滤结果?
- r - 基于合并向量将代码重新编码为二分代码
- git - 为什么在打开 Visual Studio 19 并占用 20% CPU 时运行 git.exe?
- pandas - 如何计算熊猫中空值的平均值?
- c# - C# - 屏幕分辨率不适用于 Selenium Chrome Web 驱动程序
- python - 取消堆叠多级熊猫数据框时如何保留某些列