mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-30 01:47:21 +08:00
[semantic-ui-site] Different weak-type workaround.
This commit is contained in:
30
types/semantic-ui-site/global.d.ts
vendored
30
types/semantic-ui-site/global.d.ts
vendored
@@ -11,16 +11,25 @@ declare namespace SemanticUI {
|
||||
settings: SiteSettings;
|
||||
|
||||
(behavior: 'destroy'): JQuery;
|
||||
<K extends keyof SiteSettings>(behavior: 'setting', name: K, value?: undefined): SiteSettings[K];
|
||||
<K extends keyof SiteSettings>(behavior: 'setting', name: K, value: SiteSettings[K]): JQuery;
|
||||
(behavior: 'setting', value: SiteSettings.Param): JQuery;
|
||||
(settings?: SiteSettings.Param): JQuery;
|
||||
<K extends keyof SiteSettings>(behavior: 'setting', name: K, value?: undefined): SiteSettings._Impl[K];
|
||||
<K extends keyof SiteSettings>(behavior: 'setting', name: K, value: SiteSettings._Impl[K]): JQuery;
|
||||
(behavior: 'setting', value: SiteSettings): JQuery;
|
||||
(settings?: SiteSettings): JQuery;
|
||||
}
|
||||
|
||||
interface SiteSettings extends Pick<SiteSettings._Impl, keyof SiteSettings._Impl> { }
|
||||
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<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
modules: string[];
|
||||
@@ -68,10 +77,15 @@ declare namespace SemanticUI {
|
||||
}
|
||||
|
||||
namespace Site {
|
||||
interface NamespaceStubSettings extends Pick<NamespaceStubSettings._Impl, keyof NamespaceStubSettings._Impl> { }
|
||||
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<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
cache: any;
|
||||
|
||||
@@ -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<HTMLElement>
|
||||
$(selector).site('setting', 'debug', undefined); // $ExpectType boolean
|
||||
$(selector).site('setting', 'debug'); // $ExpectType boolean
|
||||
$(selector).site('setting', 'debug', true); // $ExpectType JQuery<HTMLElement>
|
||||
// $ExpectType JQuery<HTMLElement>
|
||||
$(selector).site('setting', {
|
||||
namespace: 'namespace',
|
||||
name: 'name',
|
||||
@@ -27,7 +28,8 @@ function test_site() {
|
||||
debug: true,
|
||||
performance: true,
|
||||
verbose: true
|
||||
}) === $();
|
||||
});
|
||||
// $ExpectType JQuery<HTMLElement>
|
||||
$(selector).site({
|
||||
modules: [
|
||||
'module1',
|
||||
@@ -41,12 +43,16 @@ function test_site() {
|
||||
section: {},
|
||||
utilities: {}
|
||||
}
|
||||
}) === $();
|
||||
$(selector).site() === $();
|
||||
});
|
||||
$(selector).site(); // $ExpectType JQuery<HTMLElement>
|
||||
|
||||
$(selector).site('foo'); // $ExpectError
|
||||
$(selector).site({ foo: 'bar' }); // $ExpectError
|
||||
}
|
||||
|
||||
import site = require('semantic-ui-site');
|
||||
|
||||
function test_module() {
|
||||
site; // $ExpectType Site
|
||||
$.fn.site = site;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user