[英]Validate if JSON matches type
如果 JSON,我會在表格上的 angular 應用程序中獲取一些序列化信息。 我想檢查事件屬性名稱是否是我的預定義字符串之一。
事件名稱類型:
EventName =
'appInfo' |
'connectivity' |
'location' |
'pushNotification' |
'newVersion';
const foo: EventName = 'appInfo';
const bar: EventName = 'appInfos'; // error
const baz: EventName = JSON.parse('appInfos'); // no error
// validation
const nameValid = [
'appInfo',
'connectivity',
'location',
'pushNotification',
'newVersion'
].includes(baz) // works, but I would need to change things here and in type if something changes
如果您只想在一個地方維護您的字符串,您可以將它們as const
放入一個數組中,然后從該數組派生一個typeof
。
const EVENT_NAMES = [
'appInfo',
'connectivity',
'location',
'pushNotification',
'newVersion',
] as const;
type EventName = typeof EVENT_NAMES[number];
const foo: EventName = 'appInfo';
const bar: EventName = 'appInfos'; // error
const baz: EventName = JSON.parse('appInfos'); // no error
EVENT_NAMES.includes(baz);
EventName
類型將是:
const EVENT_NAMES: readonly ["appInfo", "connectivity", "location", "pushNotification", "newVersion"]
根據@bherbruck 的回答,我將 EventName 從 type 更改為 enum。 所以我的枚舉看起來像
enum EventName {
AppInfo = 'appInfo',
Connectivity = 'connectivity',
Location = 'location',
PushNotification = 'pushNotification',
NewVersion = 'newVersion'
}
驗證是
... && Object.values(EventName).includes(this.name);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.