diff --git a/types/semantic-ui-site/global.d.ts b/types/semantic-ui-site/global.d.ts index 1cd7caa858..d03516fc9b 100644 --- a/types/semantic-ui-site/global.d.ts +++ b/types/semantic-ui-site/global.d.ts @@ -11,16 +11,25 @@ declare namespace SemanticUI { settings: SiteSettings; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined): SiteSettings[K]; - (behavior: 'setting', name: K, value: SiteSettings[K]): JQuery; - (behavior: 'setting', value: SiteSettings.Param): JQuery; - (settings?: SiteSettings.Param): JQuery; + (behavior: 'setting', name: K, value?: undefined): SiteSettings._Impl[K]; + (behavior: 'setting', name: K, value: SiteSettings._Impl[K]): JQuery; + (behavior: 'setting', value: SiteSettings): JQuery; + (settings?: SiteSettings): JQuery; } - interface SiteSettings extends Pick { } + type SiteSettings = SiteSettings.Param; namespace SiteSettings { - type Param = SiteSettings | object; + type Param = (Pick<_Impl, 'modules'> | + Pick<_Impl, 'siteNamespace'> | + Pick<_Impl, 'namespaceStub'> | + Pick<_Impl, 'namespace'> | + Pick<_Impl, 'name'> | + Pick<_Impl, 'silent'> | + Pick<_Impl, 'debug'> | + Pick<_Impl, 'performance'> | + Pick<_Impl, 'verbose'>) & + Partial>; interface _Impl { modules: string[]; @@ -68,10 +77,15 @@ declare namespace SemanticUI { } namespace Site { - interface NamespaceStubSettings extends Pick { } + type NamespaceStubSettings = NamespaceStubSettings.Param; namespace NamespaceStubSettings { - type Param = NamespaceStubSettings | object; + type Param = (Pick<_Impl, 'cache'> | + Pick<_Impl, 'config'> | + Pick<_Impl, 'sections'> | + Pick<_Impl, 'section'> | + Pick<_Impl, 'utilities'>) & + Partial>; interface _Impl { cache: any; diff --git a/types/semantic-ui-site/semantic-ui-site-tests.ts b/types/semantic-ui-site/semantic-ui-site-tests.ts index 0eaddfc5b2..a5fac3ff89 100644 --- a/types/semantic-ui-site/semantic-ui-site-tests.ts +++ b/types/semantic-ui-site/semantic-ui-site-tests.ts @@ -16,10 +16,11 @@ function test_site_static() { function test_site() { const selector = '.ui.site'; - $(selector).site('destroy') === $(); - $(selector).site('setting', 'debug', undefined) === false; - $(selector).site('setting', 'debug') === false; - $(selector).site('setting', 'debug', true) === $(); + $(selector).site('destroy'); // $ExpectType JQuery + $(selector).site('setting', 'debug', undefined); // $ExpectType boolean + $(selector).site('setting', 'debug'); // $ExpectType boolean + $(selector).site('setting', 'debug', true); // $ExpectType JQuery + // $ExpectType JQuery $(selector).site('setting', { namespace: 'namespace', name: 'name', @@ -27,7 +28,8 @@ function test_site() { debug: true, performance: true, verbose: true - }) === $(); + }); + // $ExpectType JQuery $(selector).site({ modules: [ 'module1', @@ -41,12 +43,16 @@ function test_site() { section: {}, utilities: {} } - }) === $(); - $(selector).site() === $(); + }); + $(selector).site(); // $ExpectType JQuery + + $(selector).site('foo'); // $ExpectError + $(selector).site({ foo: 'bar' }); // $ExpectError } import site = require('semantic-ui-site'); function test_module() { + site; // $ExpectType Site $.fn.site = site; }