How to assign string types from a enum in Typescript?

Multi tool use
So I have an enum which contains a set of strings
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
I defined an interface like below
export interface IApiResponse "NOT_FOUND" and so on...
I know I can define just like "INVALID_SHAPE" | "NOT_FOUND" ...
But is there a way to de-structure the enum to errorCode
so that it can accept only one of those strings?
typescript
add a comment |
So I have an enum which contains a set of strings
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
I defined an interface like below
export interface IApiResponse "NOT_FOUND" and so on...
I know I can define just like "INVALID_SHAPE" | "NOT_FOUND" ...
But is there a way to de-structure the enum to errorCode
so that it can accept only one of those strings?
typescript
5
Question: why not declare it aserrorCode?: apiErrors
?
– Aviad P.
Nov 14 '18 at 18:04
And rename the enum toApiErrorCode
?
– JB Nizet
Nov 14 '18 at 18:06
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52
add a comment |
So I have an enum which contains a set of strings
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
I defined an interface like below
export interface IApiResponse "NOT_FOUND" and so on...
I know I can define just like "INVALID_SHAPE" | "NOT_FOUND" ...
But is there a way to de-structure the enum to errorCode
so that it can accept only one of those strings?
typescript
So I have an enum which contains a set of strings
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
I defined an interface like below
export interface IApiResponse "NOT_FOUND" and so on...
I know I can define just like "INVALID_SHAPE" | "NOT_FOUND" ...
But is there a way to de-structure the enum to errorCode
so that it can accept only one of those strings?
typescript
typescript
asked Nov 14 '18 at 18:01
Sai DattaSai Datta
4431417
4431417
5
Question: why not declare it aserrorCode?: apiErrors
?
– Aviad P.
Nov 14 '18 at 18:04
And rename the enum toApiErrorCode
?
– JB Nizet
Nov 14 '18 at 18:06
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52
add a comment |
5
Question: why not declare it aserrorCode?: apiErrors
?
– Aviad P.
Nov 14 '18 at 18:04
And rename the enum toApiErrorCode
?
– JB Nizet
Nov 14 '18 at 18:06
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52
5
5
Question: why not declare it as
errorCode?: apiErrors
?– Aviad P.
Nov 14 '18 at 18:04
Question: why not declare it as
errorCode?: apiErrors
?– Aviad P.
Nov 14 '18 at 18:04
And rename the enum to
ApiErrorCode
?– JB Nizet
Nov 14 '18 at 18:06
And rename the enum to
ApiErrorCode
?– JB Nizet
Nov 14 '18 at 18:06
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52
add a comment |
1 Answer
1
active
oldest
votes
As @JBNizet and @AviadP mentioned, just set errorCode
to the apiErrors
enum. Typescript will automatically ensure that anything that implements the IApiResponse
interface has errorCode
set to be one of those values.
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
export interface IApiResponse
status: boolean;
payload: any;
errorCode?: apiErrors // this is the change
// this would now be invalid
const invalidResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: 'something not in the enum',
;
// this is valid
const validResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: apiErrors.INVALID_SHAPE,
;
// this is also valid
const anotherValidResponse: IApiResponse =
status: true,
payload: foo: 'bar',
// errorCode isn't included at all
;
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53306274%2fhow-to-assign-string-types-from-a-enum-in-typescript%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As @JBNizet and @AviadP mentioned, just set errorCode
to the apiErrors
enum. Typescript will automatically ensure that anything that implements the IApiResponse
interface has errorCode
set to be one of those values.
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
export interface IApiResponse
status: boolean;
payload: any;
errorCode?: apiErrors // this is the change
// this would now be invalid
const invalidResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: 'something not in the enum',
;
// this is valid
const validResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: apiErrors.INVALID_SHAPE,
;
// this is also valid
const anotherValidResponse: IApiResponse =
status: true,
payload: foo: 'bar',
// errorCode isn't included at all
;
add a comment |
As @JBNizet and @AviadP mentioned, just set errorCode
to the apiErrors
enum. Typescript will automatically ensure that anything that implements the IApiResponse
interface has errorCode
set to be one of those values.
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
export interface IApiResponse
status: boolean;
payload: any;
errorCode?: apiErrors // this is the change
// this would now be invalid
const invalidResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: 'something not in the enum',
;
// this is valid
const validResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: apiErrors.INVALID_SHAPE,
;
// this is also valid
const anotherValidResponse: IApiResponse =
status: true,
payload: foo: 'bar',
// errorCode isn't included at all
;
add a comment |
As @JBNizet and @AviadP mentioned, just set errorCode
to the apiErrors
enum. Typescript will automatically ensure that anything that implements the IApiResponse
interface has errorCode
set to be one of those values.
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
export interface IApiResponse
status: boolean;
payload: any;
errorCode?: apiErrors // this is the change
// this would now be invalid
const invalidResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: 'something not in the enum',
;
// this is valid
const validResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: apiErrors.INVALID_SHAPE,
;
// this is also valid
const anotherValidResponse: IApiResponse =
status: true,
payload: foo: 'bar',
// errorCode isn't included at all
;
As @JBNizet and @AviadP mentioned, just set errorCode
to the apiErrors
enum. Typescript will automatically ensure that anything that implements the IApiResponse
interface has errorCode
set to be one of those values.
export enum apiErrors
INVALID_SHAPE = "INVALID_SHAPE",
NOT_FOUND = "NOT_FOUND",
EXISTS = "EXISTS",
INVALID_AUTH = "INVALID_AUTH",
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
export interface IApiResponse
status: boolean;
payload: any;
errorCode?: apiErrors // this is the change
// this would now be invalid
const invalidResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: 'something not in the enum',
;
// this is valid
const validResponse: IApiResponse =
status: false,
payload: foo: 'bar',
errorCode: apiErrors.INVALID_SHAPE,
;
// this is also valid
const anotherValidResponse: IApiResponse =
status: true,
payload: foo: 'bar',
// errorCode isn't included at all
;
answered Nov 14 '18 at 18:52
colefnercolefner
1,29311311
1,29311311
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53306274%2fhow-to-assign-string-types-from-a-enum-in-typescript%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
ksCOts3gEF2 nGAAX,n IhRuobyZKEK wCj
5
Question: why not declare it as
errorCode?: apiErrors
?– Aviad P.
Nov 14 '18 at 18:04
And rename the enum to
ApiErrorCode
?– JB Nizet
Nov 14 '18 at 18:06
otherwise if you want just to define the values as a type you can use: export type ApiErrors = 'INVALID_SHAPRE' | 'EXISTS'; etc
– C Smith
Nov 14 '18 at 18:52