types: make application command option union easier to use (#250)

This commit is contained in:
Suneet Tipirneni
2021-12-22 13:19:45 -05:00
committed by GitHub
parent 46db72da2f
commit 8bbb81942b
5 changed files with 62 additions and 6 deletions

View File

@@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase {
name: string;
description: string;
required?: boolean;
autocomplete?: never;
}
/**

View File

@@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase {
name: string;
description: string;
required?: boolean;
autocomplete?: never;
}
/**
@@ -29,7 +28,6 @@ export type APIApplicationCommandOption =
| APIApplicationCommandSubCommandOptions
| APIApplicationCommandOptionBase
| APIApplicationCommandChannelOptions
| APIApplicationCommandOptionBase
| APIApplicationCommandNumberArgumentOptions
| APIApplicationCommandStringAutocompleteOptions
| APIApplicationCommandNumericAutocompleteOptions;

View File

@@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase {
name: string;
description: string;
required?: boolean;
autocomplete?: never;
}
/**

View File

@@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase {
name: string;
description: string;
required?: boolean;
autocomplete?: never;
}
/**
@@ -29,7 +28,6 @@ export type APIApplicationCommandOption =
| APIApplicationCommandSubCommandOptions
| APIApplicationCommandOptionBase
| APIApplicationCommandChannelOptions
| APIApplicationCommandOptionBase
| APIApplicationCommandNumberArgumentOptions
| APIApplicationCommandStringAutocompleteOptions
| APIApplicationCommandNumericAutocompleteOptions;

View File

@@ -0,0 +1,62 @@
import { expectAssignable, expectNotAssignable, expectNotType } from 'tsd';
import {
APIApplicationCommandNumericAutocompleteOptions,
APIApplicationCommandOption,
APIApplicationCommandStringAutocompleteOptions,
ApplicationCommandOptionType,
} from '../../v9';
const baseValues = {
name: 'test',
description: 'test',
};
expectAssignable<APIApplicationCommandStringAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.String,
autocomplete: true,
});
expectAssignable<APIApplicationCommandNumericAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.Integer,
autocomplete: true,
});
expectAssignable<APIApplicationCommandNumericAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.Number,
autocomplete: true,
});
expectNotType<APIApplicationCommandStringAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.String,
choices: [],
});
expectNotAssignable<APIApplicationCommandStringAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.String,
choices: [],
autocomplete: true,
});
expectNotAssignable<APIApplicationCommandStringAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.String,
choices: [],
autocomplete: false,
});
expectNotAssignable<APIApplicationCommandNumericAutocompleteOptions>({
...baseValues,
type: ApplicationCommandOptionType.Number,
choices: [],
});
expectNotAssignable<APIApplicationCommandOption>({
...baseValues,
type: ApplicationCommandOptionType.Boolean,
autocomplete: true,
});