G. Frx
G. Frx

Reputation: 3090

How to use type (typescript type) in swagger @ApiProperty type

I'm facing a problem. I need to expose a 'type' in an @ApiProperty of swagger on my API. But swagger don't accept it. I looked in many website to find solution but I did not find any.

Here is the error I get:

TS2693: 'testTest' only refers to a type, but is being used as a value here.

type testTest = 'A' | 'B';

    @ApiProperty({
  type: testTest,
  example: 'fr',
})
test: testTest;

I can't use something else since the type I need to use is from an external library.

Upvotes: 4

Views: 8644

Answers (1)

SPS
SPS

Reputation: 943

You cannot use a TypeScript type as a value for type in Swagger because type you are importing from the said library is not available at runtime, or once its transpiled to javascript. its only used for type checking. Thats how typescript works. This is same for any type, interfaces, return types etc...

What I suggest you do is to have a variable hold the values in type testTest = 'A' | 'B';

const testTest = ['A','B'];

@ApiProperty({
  type: String,
  example: testTest[0],
  enum: testTest
})
test: testTest;

Upvotes: 2

Related Questions