Strict function variance fixes round 1

This commit is contained in:
Nathan Shively-Sanders 2017-10-02 15:50:34 -07:00
parent 2fba16f44b
commit b8ea87c68e
27 changed files with 273 additions and 182 deletions

View File

@ -219,7 +219,7 @@ declare namespace Backbone {
/**
* Specify a model attribute name (string) or function that will be used to sort the collection.
*/
comparator: string | ((element: TModel) => number | string) | ((compare: TModel, to?: TModel) => number);
comparator: string | { bivarianceHack(element: TModel): number | string }["bivarianceHack"] | { bivarianceHack(compare: TModel, to?: TModel): number }["bivarianceHack"];
add(model: {}|TModel, options?: AddOptions): TModel;
add(models: ({}|TModel)[], options?: AddOptions): TModel[];

View File

@ -7,9 +7,9 @@
/// <reference types="jquery" />
/** Bootbox options shared by all modal types */
interface BootboxBaseOptions {
interface BootboxBaseOptions<T = any> {
title?: string | Element;
callback?: (result: boolean | string) => any;
callback?: (result: T) => any;
onEscape?: (() => any) | boolean;
show?: boolean;
backdrop?: boolean;
@ -22,24 +22,24 @@ interface BootboxBaseOptions {
}
/** Bootbox options available for custom modals */
interface BootboxDialogOptions extends BootboxBaseOptions {
interface BootboxDialogOptions<T = any> extends BootboxBaseOptions<T> {
message: string | Element;
}
/** Bootbox options available for alert modals */
interface BootboxAlertOptions extends BootboxDialogOptions {
interface BootboxAlertOptions extends BootboxDialogOptions<void> {
callback?: () => any;
buttons?: BootboxAlertButtonMap;
}
/** Bootbox options available for confirm modals */
interface BootboxConfirmOptions extends BootboxDialogOptions {
interface BootboxConfirmOptions extends BootboxDialogOptions<boolean> {
callback: (result: boolean) => any;
buttons?: BootboxConfirmPromptButtonMap;
}
/** Bootbox options available for prompt modals */
interface BootboxPromptOptions extends BootboxBaseOptions {
interface BootboxPromptOptions extends BootboxBaseOptions<string> {
title: string;
value?: string;
inputType?: "text" | "textarea" | "email" | "select" | "checkbox" | "date" | "time" | "number" | "password";
@ -93,7 +93,7 @@ interface BootboxStatic {
prompt(message: string, callback: (result: string) => void): JQuery;
prompt(options: BootboxPromptOptions): JQuery;
dialog(message: string, callback?: (result: string) => void): JQuery;
dialog(options: BootboxDialogOptions): JQuery;
dialog(options: BootboxDialogOptions<string>): JQuery;
setDefaults(options: BootboxDefaultOptions): void;
hideAll(): void;

View File

@ -20,4 +20,4 @@
"index.d.ts",
"bootbox-tests.ts"
]
}
}

View File

@ -25,7 +25,7 @@ interface Window {
* NOTE: The InAppBrowser window behaves like a standard web browser, and can't access Cordova APIs.
*/
interface InAppBrowser extends Window {
onloadstart(type: InAppBrowserEvent): void;
onloadstart(type: Event): void;
onloadstop(type: InAppBrowserEvent): void;
onloaderror(type: InAppBrowserEvent): void;
onexit(type: InAppBrowserEvent): void;

View File

@ -20,4 +20,4 @@
"index.d.ts",
"cordova-plugin-inappbrowser-tests.ts"
]
}
}

View File

@ -61,8 +61,8 @@ declare namespace WL {
getHeader(name: any): string;
}
interface Options {
onSuccess?: (response: IResponse) => void;
onFailure?: (response: IResponse) => void;
onSuccess?(response: IResponse): void;
onFailure?(response: IResponse): void;
invocationContext?: any;
}
interface ResponseHandler<T> {

View File

@ -20,4 +20,4 @@
"index.d.ts",
"ibm-mobilefirst-tests.ts"
]
}
}

View File

@ -19,4 +19,4 @@
"files": [
"index.d.ts"
]
}
}

View File

@ -85,7 +85,7 @@ interface JQueryStatic<TElement extends Node = HTMLElement> {
* @since 1.3
*/
off: boolean;
step: JQuery.PlainObject<JQuery.AnimationHook<TElement>>;
step: JQuery.PlainObject<JQuery.AnimationHook<Node>>;
};
/**
* A Promise-like object (or "thenable") that resolves when the document is ready.
@ -4754,7 +4754,7 @@ interface JQuery<TElement extends Node = HTMLElement> extends Iterable<TElement>
* @see {@link https://api.jquery.com/queue/}
* @since 1.2
*/
queue(queueName?: string): JQuery.Queue<TElement>;
queue(queueName?: string): JQuery.Queue<Node>;
/**
* Specify a function to execute when the DOM is fully loaded.
*

View File

@ -3061,7 +3061,7 @@ function examples() {
type: 'dog',
// Note that event comes *after* one and two
test: function(one: typeof you, two: typeof they, event: JQuery.Event<HTMLButtonElement>) {
test: function(one: typeof you, two: typeof they, event: JQuery.Event<HTMLElement>) {
$('#log')
// `one` maps to `you`, the 1st additional
@ -3081,7 +3081,7 @@ function examples() {
// The clicked element is `event.target`,
// and its type is "button"
.append('the ' + event.target.type + '.');
.append('the ' + (event.target as HTMLButtonElement).type + '.');
},
};

View File

@ -1332,7 +1332,7 @@ function longdesc() {
function jquery_css_hooks_6() {
$.fx.step.someCSSProp = function(fx) {
$.cssHooks.someCSSProp.set(fx.elem, fx.now + fx.unit);
$.cssHooks.someCSSProp.set(fx.elem as HTMLElement, fx.now + fx.unit);
};
}

View File

@ -151,8 +151,8 @@ interface KnockoutAllBindingsAccessor {
interface KnockoutBindingHandler {
after?: Array<string>;
init?: (element: any, valueAccessor: () => any, allBindingsAccessor?: KnockoutAllBindingsAccessor, viewModel?: any, bindingContext?: KnockoutBindingContext) => void | { controlsDescendantBindings: boolean; };
update?: (element: any, valueAccessor: () => any, allBindingsAccessor?: KnockoutAllBindingsAccessor, viewModel?: any, bindingContext?: KnockoutBindingContext) => void;
init?: (element: any, valueAccessor: () => any, allBindingsAccessor: KnockoutAllBindingsAccessor, viewModel: any, bindingContext: KnockoutBindingContext) => void | { controlsDescendantBindings: boolean; };
update?: (element: any, valueAccessor: () => any, allBindingsAccessor: KnockoutAllBindingsAccessor, viewModel: any, bindingContext: KnockoutBindingContext) => void;
options?: any;
preprocess?: (value: string, name: string, addBindingCallback?: (name: string, value: string) => void) => string;
[s: string]: any;

View File

@ -21,4 +21,4 @@
"test/templatingBehaviors.ts",
"test/index.ts"
]
}
}

View File

@ -4794,6 +4794,14 @@ declare namespace _ {
* _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
* // => [{ 'x': 1 }, { 'x': 2 }]
*/
uniqBy<TString extends string | null | undefined>(
array: TString,
iteratee: StringIterator<any>
): TString[];
/**
* @see _.uniqBy
*/
uniqBy<T>(
array: List<T> | null | undefined,
iteratee: ListIterator<T, any>
@ -4832,6 +4840,24 @@ declare namespace _ {
): T[];
}
interface LoDashImplicitStringWrapper {
/**
* @see _.uniqBy
*/
uniqBy(
iteratee: StringIterator<any>
): LoDashImplicitArrayWrapper<string>;
}
interface LoDashExplicitStringWrapper {
/**
* @see _.uniqBy
*/
uniqBy(
iteratee: StringIterator<any>
): LoDashExplicitArrayWrapper<string>;
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.uniqBy
@ -5074,6 +5100,14 @@ declare namespace _ {
* _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
* // => [1.1, 2.2]
*/
sortedUniqBy<TString extends string | null | undefined>(
array: TString,
iteratee: StringIterator<any>
): TString[];
/**
* @see _.sortedUniqBy
*/
sortedUniqBy<T>(
array: List<T> | null | undefined,
iteratee: ListIterator<T, any>
@ -5112,6 +5146,24 @@ declare namespace _ {
): T[];
}
interface LoDashImplicitStringWrapper {
/**
* @see _.sortedUniqBy
*/
sortedUniqBy(
iteratee: StringIterator<any>
): LoDashImplicitArrayWrapper<string>;
}
interface LoDashExplicitStringWrapper {
/**
* @see _.sortedUniqBy
*/
sortedUniqBy(
iteratee: StringIterator<any>
): LoDashExplicitArrayWrapper<string>;
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.sortedUniqBy
@ -5823,6 +5875,13 @@ declare namespace _ {
chain(value: any): LoDashExplicitWrapper<any>;
}
interface LoDashImplicitStringWrapper {
/**
* @see _.chain
*/
chain(): LoDashExplicitStringWrapper;
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.chain
@ -7796,6 +7855,14 @@ declare namespace _ {
* @param thisArg The this binding of iteratee.
* @return Returns the composed aggregate object.
*/
groupBy<TString extends string | null | undefined, TKey>(
collection: TString,
iteratee?: StringIterator<TKey>
): Dictionary<TString[]>;
/**
* @see _.groupBy
*/
groupBy<T, TKey>(
collection: List<T> | null | undefined,
iteratee?: ListIterator<T, TKey>
@ -8165,6 +8232,24 @@ declare namespace _ {
): Dictionary<T>;
}
interface LoDashImplicitStringWrapper {
/**
* @see _.keyBy
*/
keyBy(
iteratee?: StringIterator<any> | undefined
): LoDashImplicitObjectWrapper<Dictionary<string>>
}
interface LoDashExplicitStringWrapper {
/**
* @see _.keyBy
*/
keyBy(
iteratee?: StringIterator<any> | undefined
): LoDashExplicitObjectWrapper<Dictionary<string>>
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.keyBy
@ -8849,53 +8934,53 @@ declare namespace _ {
accumulator: TResult): TResult;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: List<T> | null | undefined,
callback: MemoIterator<T, TResult>,
accumulator: TResult): TResult;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: Dictionary<T> | null | undefined,
callback: MemoIterator<T, TResult>,
accumulator: TResult): TResult;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: NumericDictionary<T> | null | undefined,
callback: MemoIterator<T, TResult>,
accumulator: TResult): TResult;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: T[] | null | undefined,
callback: MemoIterator<T, TResult>): TResult | undefined;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: List<T> | null | undefined,
callback: MemoIterator<T, TResult>): TResult | undefined;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: Dictionary<T> | null | undefined,
callback: MemoIterator<T, TResult>): TResult | undefined;
/**
* @see _.reduce
**/
* @see _.reduce
**/
reduce<T, TResult>(
collection: NumericDictionary<T> | null | undefined,
callback: MemoIterator<T, TResult>): TResult | undefined;
@ -12606,7 +12691,7 @@ declare namespace _ {
}
//_.isMatchWith
type isMatchWithCustomizer = (value: any, other: any, indexOrKey?: number|string) => boolean;
type isMatchWithCustomizer = (value: any, other: any, indexOrKey: number|string) => boolean;
interface LoDashStatic {
/**
@ -14155,7 +14240,7 @@ declare namespace _ {
* @see _.sumBy
*/
sumBy(
iteratee: ListIterator<{}, number>
iteratee: ListIterator<TObject, number>
): number;
/**
@ -14198,7 +14283,7 @@ declare namespace _ {
* @see _.sumBy
*/
sumBy(
iteratee: ListIterator<{}, number>
iteratee: ListIterator<TObject, number>
): LoDashExplicitWrapper<number>;
/**
@ -16955,7 +17040,7 @@ declare namespace _ {
}
//_.mergeWith
type MergeWithCustomizer = (value: any, srcValue: any, key?: string, object?: Object, source?: Object) => any;
type MergeWithCustomizer = { bivariantHack(value: any, srcValue: any, key: string, object: any, source: any): any; }["bivariantHack"]
interface LoDashStatic {
/**
@ -17438,31 +17523,31 @@ declare namespace _ {
* @parem customizer The function to customize assigned values.
* @return Returns object.
*/
setWith<O, V, TResult>(
object: O,
path: Many<StringRepresentable>,
value: V,
customizer?: SetWithCustomizer<O>
): TResult;
/**
* @see _.setWith
*/
setWith<TResult>(
object: Object,
object: any,
path: Many<StringRepresentable>,
value: any,
customizer?: SetWithCustomizer<Object>
customizer?: SetWithCustomizer<any>
): TResult;
/**
* @see _.setWith
*/
setWith<V, TResult>(
object: Object,
object: any,
path: Many<StringRepresentable>,
value: V,
customizer?: SetWithCustomizer<Object>
): TResult;
/**
* @see _.setWith
*/
setWith<O, V, TResult>(
object: O,
path: Many<StringRepresentable>,
value: V,
customizer?: SetWithCustomizer<O>
customizer?: SetWithCustomizer<any>
): TResult;
}
@ -17782,22 +17867,22 @@ declare namespace _ {
* _.updateWith(object, '[0][1]', _.constant('a'), Object);
* // => { '0': { '1': 'a' } }
*/
updateWith<TResult>(
object: Object,
path: Many<StringRepresentable>,
updater: (oldValue: any) => any,
customizer?: SetWithCustomizer<Object>
): TResult;
/**
* @see _.updateWith
*/
updateWith<O extends {}, TResult>(
object: O,
path: Many<StringRepresentable>,
updater: (oldValue: any) => any,
customizer?: SetWithCustomizer<O>
): TResult;
/**
* @see _.updateWith
*/
updateWith<TResult>(
object: any,
path: Many<StringRepresentable>,
updater: (oldValue: any) => any,
customizer?: SetWithCustomizer<any>
): TResult;
}
interface LoDashImplicitObjectWrapper<T> {

View File

@ -2256,7 +2256,7 @@ namespace TestUniqBy {
let result: string[];
result = _.uniqBy<string>('abc', stringIterator);
result = _.uniqBy<string, string>('abc', stringIterator);
result = _.uniqBy('abc', stringIterator);
}
{
@ -2278,7 +2278,7 @@ namespace TestUniqBy {
{
let result: _.LoDashImplicitArrayWrapper<string>;
result = _('abc').uniqBy<string>(stringIterator);
result = _('abc').uniqBy(stringIterator);
}
{
@ -2298,7 +2298,7 @@ namespace TestUniqBy {
{
let result: _.LoDashExplicitArrayWrapper<string>;
result = _('abc').chain().uniqBy<string>(stringIterator);
result = _('abc').chain().uniqBy(stringIterator);
}
{
@ -2371,7 +2371,7 @@ namespace TestSortedUniqBy {
let result: string[];
result = _.sortedUniqBy<string>('abc', stringIterator);
result = _.sortedUniqBy<string, string>('abc', stringIterator);
result = _.sortedUniqBy('abc', stringIterator);
}
{
@ -2393,7 +2393,7 @@ namespace TestSortedUniqBy {
{
let result: _.LoDashImplicitArrayWrapper<string>;
result = _('abc').sortedUniqBy<string>(stringIterator);
result = _('abc').sortedUniqBy(stringIterator);
}
{
@ -2413,7 +2413,7 @@ namespace TestSortedUniqBy {
{
let result: _.LoDashExplicitArrayWrapper<string>;
result = _('abc').chain().sortedUniqBy<string>(stringIterator);
result = _('abc').chain().sortedUniqBy(stringIterator);
}
{
@ -3345,7 +3345,7 @@ namespace TestCountBy {
let dictionary: _.Dictionary<TResult> | null | undefined = obj;
let numericDictionary: _.NumericDictionary<TResult> | null | undefined = obj;
let stringIterator: (value: string, index: number, collection: string) => any = (value: string, index: number, collection: string) => 1;
let stringIterator: (value: string, index: number, collection: ArrayLike<string>) => any = (value: string, index: number, collection: ArrayLike<string>) => 1;
let listIterator: (value: TResult, index: number, collection: _.List<TResult>) => any = (value: TResult, index: number, collection: _.List<TResult>) => 1;
let dictionaryIterator: (value: TResult, key: string, collection: _.Dictionary<TResult>) => any = (value: TResult, key: string, collection: _.Dictionary<TResult>) => 1;
let numericDictionaryIterator: (value: TResult, key: number, collection: _.NumericDictionary<TResult>) => any = (value: TResult, key: number, collection: _.NumericDictionary<TResult>) => 1;
@ -4557,7 +4557,7 @@ namespace TestForEach {
{
let result: TResult[];
result = _.forEach(array, (value, index, collection: TResult[]) => {
result = _.forEach(array, (value, index, collection: ArrayLike<TResult>) => {
value; // $ExpectType TResult
index; // $ExpectType number
});
@ -4572,7 +4572,7 @@ namespace TestForEach {
{
let result: TResult[] | null | undefined;
result = _.forEach(array, (value, index, collection: TResult[]) => {
result = _.forEach(array, (value, index, collection: ArrayLike<TResult>) => {
value; // $ExpectType TResult
index; // $ExpectType number
});
@ -4990,7 +4990,7 @@ namespace TestGroupBy {
let result: _.LoDashImplicitObjectWrapper<_.Dictionary<string[]>>;
result = _('').groupBy();
result = _('').groupBy<number>(stringIterator);
result = _('').groupBy<number>((char: string, index: number, string: ArrayLike<string>) => 0);
}
{
@ -5025,7 +5025,7 @@ namespace TestGroupBy {
let result: _.LoDashExplicitObjectWrapper<_.Dictionary<string[]>>;
result = _('').chain().groupBy();
result = _('').chain().groupBy<number>(stringIterator);
result = _('').chain().groupBy<number>((char: string, index: number, string: ArrayLike<string>) => 0);
}
{
@ -5547,7 +5547,7 @@ namespace TestReduce {
result = <ABC>_.reduce({ 'a': 1, 'b': 2, 'c': 3 }, (r: ABC, num: number, key: string) => {
r[key] = num * 3;
return r;
}, {});
}, {} as ABC);
result = <number>_([1, 2, 3]).reduce<number>((sum: number, num: number) => sum + num);
result = <ABC>_({ 'a': 1, 'b': 2, 'c': 3 }).reduce<number, ABC>((r: ABC, num: number, key: string) => {
@ -6487,6 +6487,7 @@ namespace TestDebounce {
interface ResultFunc {
(n: number, s: string): boolean;
cancel(): void;
flush(): void;
}
let func: SampleFunc = (a, b) => true;
@ -6959,6 +6960,7 @@ namespace TestThrottle {
interface ResultFunc {
(n: number, s: string): boolean;
cancel(): void;
flush(): void;
}
let func: SampleFunc = (a, b) => true;
@ -8980,7 +8982,7 @@ namespace TestSumBy {
result = _(array).sumBy(listIterator);
result = _(objectArray).sumBy('age');
result = _(list).sumBy(listIterator);
result = _(list).sumBy((value: _.List<number> | null | undefined, index: number, collection: _.List<_.List<number> | null | undefined>) => 0);
result = _(objectList).sumBy('age');
}
@ -8990,7 +8992,7 @@ namespace TestSumBy {
result = _(array).chain().sumBy(listIterator);
result = _(objectArray).chain().sumBy('age');
result = _(list).chain().sumBy(listIterator);
result = _(list).chain().sumBy((value: _.List<number> | null | undefined, index: number, collection: _.List<_.List<number> | null | undefined>) => 0);
result = _(objectList).chain().sumBy('age');
}
}
@ -9146,25 +9148,25 @@ namespace TestAssign {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).assign(s1);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).assign(s1, s2);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).assign(s1, s2, s3);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).assign(s1, s2, s3, s4);
}
@ -9182,25 +9184,25 @@ namespace TestAssign {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().assign(s1);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().assign(s1, s2);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().assign(s1, s2, s3);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().assign(s1, s2, s3, s4);
}
@ -9268,22 +9270,22 @@ namespace TestAssignWith {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).assignWith(s1, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).assignWith(s1, s2, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).assignWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).assignWith(s1, s2, s3, s4, customizer);
}
@ -9299,22 +9301,22 @@ namespace TestAssignWith {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().assignWith(s1, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().assignWith(s1, s2, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().assignWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().assignWith(s1, s2, s3, s4, customizer);
}
@ -9385,25 +9387,25 @@ namespace TestAssignIn {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).assignIn(s1);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).assignIn(s1, s2);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).assignIn(s1, s2, s3);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).assignIn(s1, s2, s3, s4);
}
@ -9421,25 +9423,25 @@ namespace TestAssignIn {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().assignIn(s1);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().assignIn(s1, s2);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().assignIn(s1, s2, s3);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().assignIn(s1, s2, s3, s4);
}
@ -9507,22 +9509,22 @@ namespace TestAssignInWith {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).assignInWith(s1, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).assignInWith(s1, s2, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).assignInWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).assignInWith(s1, s2, s3, s4, customizer);
}
@ -9538,22 +9540,22 @@ namespace TestAssignInWith {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().assignInWith(s1, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().assignInWith(s1, s2, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().assignInWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().assignInWith(s1, s2, s3, s4, customizer);
}
@ -9652,25 +9654,25 @@ namespace TestDefaults {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: string }>;
let result: _.LoDashImplicitObjectWrapper<{ a: string & number }>;
result = _(obj).defaults(s1);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: string, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: string & number, b: number }>;
result = _(obj).defaults(s1, s2);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: string, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: string & number, b: number, c: number }>;
result = _(obj).defaults(s1, s2, s3);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: string, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: string & number, b: number, c: number, d: number }>;
result = _(obj).defaults(s1, s2, s3, s4);
}
@ -9688,25 +9690,25 @@ namespace TestDefaults {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: string }>;
let result: _.LoDashExplicitObjectWrapper<{ a: string & number }>;
result = _(obj).chain().defaults(s1);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: string, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: string & number, b: number }>;
result = _(obj).chain().defaults(s1, s2);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: string, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: string & number, b: number, c: number }>;
result = _(obj).chain().defaults(s1, s2, s3);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: string, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: string & number, b: number, c: number, d: number }>;
result = _(obj).chain().defaults(s1, s2, s3, s4);
}
@ -9873,25 +9875,25 @@ namespace TestExtend {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).extend(s1);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).extend(s1, s2);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).extend(s1, s2, s3);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).extend(s1, s2, s3, s4);
}
@ -9909,25 +9911,25 @@ namespace TestExtend {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().extend(s1);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().extend(s1, s2);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().extend(s1, s2, s3);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().extend(s1, s2, s3, s4);
}
@ -10000,25 +10002,25 @@ namespace TestExtendWith {
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string }>;
result = _(obj).extendWith(s1, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).extendWith(s1, s2, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).extendWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashImplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashImplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).extendWith(s1, s2, s3, s4, customizer);
}
@ -10036,25 +10038,25 @@ namespace TestExtendWith {
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string }>;
result = _(obj).chain().extendWith(s1, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number }>;
result = _(obj).chain().extendWith(s1, s2, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number }>;
result = _(obj).chain().extendWith(s1, s2, s3, customizer);
}
{
let result: _.LoDashExplicitObjectWrapper<{ a: number, b: number, c: number, d: number }>;
let result: _.LoDashExplicitObjectWrapper<{ a: number & string, b: number, c: number, d: number }>;
result = _(obj).chain().extendWith(s1, s2, s3, s4, customizer);
}
@ -10986,7 +10988,7 @@ namespace TestMergeWith {
type ExpectedResult = { a: number, b: string };
let result: ExpectedResult;
let customizer: (value: any, srcValue: any, key?: string, object?: InitialValue, source?: MergingValue) => any = (value: any, srcValue: any, key?: string, object?: InitialValue, source?: MergingValue) => 1;
let customizer: (value: any, srcValue: any, key: string, object: InitialValue, source: MergingValue) => any = (value: any, srcValue: any, key: string, object: InitialValue, source: MergingValue) => 1;
// Test for basic merging
result = _.mergeWith(initialValue, mergingValue, customizer);
@ -11003,7 +11005,7 @@ namespace TestMergeWith {
result = _(initialValue).mergeWith({}, {}, mergingValue, customizer).value();
result = _(initialValue).mergeWith({}, {}, {}, mergingValue, customizer).value();
// Once we get to the varargs version, you have to specify the result explicitl
// Once we get to the varargs version, you have to specify the result explicitly
result = _(initialValue).mergeWith<ExpectedResult>({}, {}, {}, {}, mergingValue, customizer).value();
}

View File

@ -315,4 +315,4 @@
"zipObjectDeep.d.ts",
"zipWith.d.ts"
]
}
}

View File

@ -90,10 +90,10 @@ var myAppender: log4js.AppenderModule = {
return cb(null);
},
configure: function (config: MyAppenderConfig, options?: { [key: string]: any }): log4js.Appender {
configure: function (config: log4js.CustomAppenderConfig, options?: { [key: string]: any }): log4js.Appender {
var mycfg = config.mycfg;
return this.appender(mycfg);
}
}
log4js.loadAppender("my-log4js-appender", myAppender);
log4js.loadAppender("my-log4js-appender", myAppender);

View File

@ -19,4 +19,4 @@
"index.d.ts",
"log4js-tests.ts"
]
}
}

View File

@ -2252,8 +2252,8 @@ namespace process_tests {
process.once("warning", (warning: Error) => { });
process.prependListener("message", (message: any, sendHandle: any) => { });
process.prependOnceListener("SIGBREAK", () => { });
process.on("newListener", (event: string, listener: Function) => { });
process.once("removeListener", (event: string, listener: Function) => { });
process.on("newListener", (event: string | symbol, listener: Function) => { });
process.once("removeListener", (event: string | symbol, listener: Function) => { });
const listeners = process.listeners('uncaughtException');
const oldHandler = listeners[listeners.length - 1];

View File

@ -144,13 +144,13 @@ const nodeStyle = (input: string, cb: (error: any, success: any) => void) => {
cb(null, input);
};
Q.nfapply(nodeStyle, ["foo"]).done((result: string) => {
Q.nfapply<string>(nodeStyle, ["foo"]).done((result: string) => {
});
Q.nfcall(nodeStyle, "foo").done((result: string) => {
Q.nfcall<string>(nodeStyle, "foo").done((result: string) => {
});
Q.denodeify(nodeStyle)('foo').done((result: string) => {
Q.denodeify<string>(nodeStyle)('foo').done((result: string) => {
});
Q.nfbind(nodeStyle)('foo').done((result: string) => {
Q.nfbind<string>(nodeStyle)('foo').done((result: string) => {
});
class Repo {
@ -171,7 +171,7 @@ class Repo {
}
const kitty = new Repo();
Q.nbind(kitty.find, kitty)({cute: true}).done((kitties: any[]) => {
Q.nbind<any[]>(kitty.find, kitty)({cute: true}).done((kitties: any[]) => {
});
/**

View File

@ -225,9 +225,9 @@ declare namespace R {
/**
* Returns a new list containing the contents of the given list, followed by the given element.
*/
append<U>(el: U): <T>(list: T[]) => Array<(T & U)>;
append<T, U>(el: U, list: T[]): Array<(T & U)>;
append<U>(el: U): <T>(list: T[]) => Array<(T & U)>;
append<U>(el: U): <T>(list: T[]) => Array<(T & U)>;
append<T>(el: T, list: string): Array<T & string>;
/**
* Applies function fn to the argument list args. This is useful for creating a fixed-arity function from

View File

@ -151,9 +151,9 @@ class F2 {
};
() => {
const truncate = R.when(
const truncate = R.when(
R.propSatisfies(R.flip(R.gt)(10), "length"),
R.pipe(R.take(10), R.append("…"), R.join(""))
R.pipe<string,string,string[],string>(R.take(10), R.append("…") as (wrong: any) => string[], R.join(""))
);
const a: string = truncate("12345"); // => '12345'
const b: string = truncate("0123456789ABC"); // => '0123456789…'
@ -317,8 +317,7 @@ R.times(i, 5);
(() => {
const numbers = [1, 2, 3];
const add = (a: number, b: number) => a + b;
R.reduce(add, 10, numbers); // => 16;
R.reduce((a,b) => a + b, 10, numbers); // => 16;
})();
(() => {
@ -326,7 +325,7 @@ R.times(i, 5);
})();
(() => {
const pairs = [["a", 1], ["b", 2], ["c", 3]];
const pairs = [["a", 1], ["b", 2], ["c", 3]] as [string, number][];
function flattenPairs(pair: [string, number], acc: Array<string|number>): Array<string|number> {
return acc.concat(pair);
@ -854,13 +853,9 @@ interface Obj {
() => {
const numbers = [1, 2, 3];
function add(a: number, b: number) {
return a + b;
}
R.reduce(add, 10, numbers); // => 16
R.reduce((a,b) => a + b, 10, numbers); // => 16
R.reduce(add)(10, numbers); // => 16
R.reduce(add, 10)(numbers); // => 16
R.reduce<number,number>((a,b) => a + b, 10)(numbers); // => 16
};
interface Student {
@ -1086,7 +1081,7 @@ type Pair = KeyValuePair<string, number>;
R.transduce(transducer, fn, [], numbers); // => [2, 3]
R.transduce(transducer, fn, [])(numbers); // => [2, 3]
R.transduce(transducer, fn)([], numbers); // => [2, 3]
R.transduce(transducer)(fn, [], numbers); // => [2, 3]
R.transduce<number, number>(transducer)(fn, [], numbers); // => [2, 3]
};
() => {
@ -1101,7 +1096,7 @@ type Pair = KeyValuePair<string, number>;
const list = [1, 2, 3];
R.traverse(of, fn, list);
R.traverse(of, fn)(list);
R.traverse(of)(fn, list);
R.traverse<number, number[], {}>(of)(fn, list);
};
() => {
@ -1691,7 +1686,7 @@ class Rectangle {
const format = R.converge(
R.call, [
R.pipe(R.prop("indent"), indentN),
R.pipe<{}, number, (s: string) => string>(R.prop("indent"), indentN),
R.prop("value")
]
);
@ -1841,7 +1836,7 @@ class Rectangle {
};
() => {
const sortByAgeDescending = R.sortBy(R.compose(R.negate, R.prop("age")));
const sortByAgeDescending = R.sortBy(R.compose<{}, number, number>(R.negate, R.prop("age")));
const alice = {
name: "ALICE",
age : 101
@ -1859,7 +1854,7 @@ class Rectangle {
};
() => {
const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop("name")));
const sortByNameCaseInsensitive = R.sortBy(R.compose<string,string,string>(R.toLower, R.prop("name")));
const alice = {
name: "ALICE",
age : 101

View File

@ -299,7 +299,7 @@ class ScrollerListComponentTest extends React.Component<{}, { dataSource: ListVi
return <ScrollView {...props} style={[scrollViewStyle1.scrollView, scrollViewStyle2]}/>
}}
renderRow={({ type, data }, _, row: number) => {
renderRow={({ type, data }, _, row) => {
return <Text>Filler</Text>
}
} />

View File

@ -381,6 +381,7 @@ interface DispatchProps {
declare var actionCreators: () => {
action: Function;
}
declare var dispatchActionCreators: () => DispatchProps;
declare var addTodo: () => { type: string; };
declare var todoActionCreators: { [type: string]: (...args: any[]) => any; };
declare var counterActionCreators: { [type: string]: (...args: any[]) => any; };
@ -521,7 +522,7 @@ function mergeProps(stateProps: TodoState, dispatchProps: DispatchProps, ownProp
});
}
connect(mapStateToProps2, actionCreators, mergeProps)(MyRootComponent);
connect(mapStateToProps2, dispatchActionCreators, mergeProps)(MyRootComponent);
//https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14622#issuecomment-279820358

View File

@ -74,7 +74,7 @@ declare namespace React {
type ComponentType<P = {}> = ComponentClass<P> | StatelessComponent<P>;
type Key = string | number;
type Ref<T> = string | ((instance: T | null) => any);
type Ref<T> = string | { bivarianceHack(instance: T | null): any }["bivarianceHack"];
// tslint:disable-next-line:interface-over-type-literal
type ComponentState = {};
@ -557,7 +557,7 @@ declare namespace React {
// Event Handler Types
// ----------------------------------------------------------------------
type EventHandler<E extends SyntheticEvent<any>> = (event: E) => void;
type EventHandler<E extends SyntheticEvent<any>> = { bivarianceHack(event: E): void }["bivarianceHack"];
type ReactEventHandler<T> = EventHandler<SyntheticEvent<T>>;
@ -3371,7 +3371,7 @@ declare namespace React {
// React.PropTypes
// ----------------------------------------------------------------------
type Validator<T> = (object: T, key: string, componentName: string, ...rest: any[]) => Error | null;
type Validator<T> = { bivarianceHack(object: T, key: string, componentName: string, ...rest: any[]): Error | null }["bivarianceHack"];
interface Requireable<T> extends Validator<T> {
isRequired: Validator<T>;

View File

@ -530,7 +530,8 @@ namespace CSR {
.onPreRender(hookFormContext)
.onPostRender(fixCsrCustomLayout);
function hookFormContext(ctx: FormRenderContexWithHook) {
function hookFormContext(preRenderContext: SPClientTemplates.RenderContext /* FormRenderContexWithHook */) {
let ctx = preRenderContext as FormRenderContexWithHook;
if (ctx.ControlMode === SPClientTemplates.ClientControlMode.EditForm
|| ctx.ControlMode === SPClientTemplates.ClientControlMode.NewForm) {
for (const fieldSchemaInForm of ctx.ListSchema.Field) {
@ -561,7 +562,8 @@ namespace CSR {
}
}
function fixCsrCustomLayout(ctx: SPClientTemplates.RenderContext_Form) {
function fixCsrCustomLayout(postRenderContext: SPClientTemplates.RenderContext /* SPClientTemplates.RenderContext_Form */) {
let ctx = postRenderContext as SPClientTemplates.RenderContext_Form;
if (ctx.ControlMode === SPClientTemplates.ClientControlMode.Invalid
|| ctx.ControlMode === SPClientTemplates.ClientControlMode.View) {
return;
@ -817,7 +819,8 @@ namespace CSR {
}
}
})
.onPostRenderField(fieldName, (schema: SPClientTemplates.FieldSchema_InForm_User, ctx) => {
.onPostRenderField(fieldName, (postRenderSchema, ctx) => {
let schema = postRenderSchema as SPClientTemplates.FieldSchema_InForm_User;
if (ctx.ControlMode === SPClientTemplates.ClientControlMode.EditForm
|| ctx.ControlMode === SPClientTemplates.ClientControlMode.NewForm) {
if (schema.Type === 'User' || schema.Type === 'UserMulti') {
@ -1148,7 +1151,9 @@ namespace CSR {
computedValue(targetField: string, transform: (...values: string[]) => string, ...sourceField: string[]): CSR {
const dependentValues: { [field: string]: string } = {};
return this.onPostRenderField(targetField, (schema: SPClientTemplates.FieldSchema_InForm, ctx: SPClientTemplates.RenderContext_FieldInForm) => {
return this.onPostRenderField(targetField, (postRenderSchema, postRenderContext) => {
let schema = postRenderSchema as SPClientTemplates.FieldSchema_InForm;
let ctx = postRenderContext as SPClientTemplates.RenderContext_FieldInForm;
if (ctx.ControlMode === SPClientTemplates.ClientControlMode.EditForm
|| ctx.ControlMode === SPClientTemplates.ClientControlMode.NewForm) {
const targetControl = CSR.getControl(schema as SPClientTemplates.FieldSchema_InForm);
@ -1165,8 +1170,8 @@ namespace CSR {
setInitialValue(fieldName: string, value: any, ignoreNull?: boolean): CSR {
if (value || !ignoreNull) {
return this.onPreRenderField(fieldName, (schema, ctx: SPClientTemplates.RenderContext_FieldInForm) => {
ctx.ListData.Items[0][fieldName] = value;
return this.onPreRenderField(fieldName, (schema, ctx) => {
(ctx as SPClientTemplates.RenderContext_FieldInForm).ListData.Items[0][fieldName] = value;
});
} else {
return this;
@ -1335,8 +1340,9 @@ namespace CSR {
}
lookupAddNew(fieldName: string, prompt: string, showDialog?: boolean, contentTypeId?: string): CSR {
return this.onPostRenderField(fieldName,
(schema: SPClientTemplates.FieldSchema_InForm_Lookup, ctx: SPClientTemplates.RenderContext_FieldInForm) => {
return this.onPostRenderField(fieldName, (postRenderSchema, postRenderContext) => {
let schema = postRenderSchema as SPClientTemplates.FieldSchema_InForm_Lookup;
let ctx = postRenderContext as SPClientTemplates.RenderContext_FieldInForm;
let control: HTMLInputElement;
if (ctx.ControlMode === SPClientTemplates.ClientControlMode.EditForm
|| ctx.ControlMode === SPClientTemplates.ClientControlMode.NewForm)
@ -2271,7 +2277,8 @@ namespace SampleReputation {
SP.SOD.registerSod('typescripttemplates.ts', '/SPTypeScript/Extensions/typescripttemplates.js');
SP.SOD.executeFunc('typescripttemplates.ts', 'CSR', () => {
CSR.override(10004, 1)
.onPreRender((ctx: MyList) => {
.onPreRender(preRenderContext => {
let ctx = preRenderContext as MyList;
ctx.listId = ctx.listName.substring(1, 37);
})
.header('<ul>')
@ -2287,7 +2294,8 @@ namespace SampleReputation {
SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs('likes.js');
}
function renderTemplate(ctx: MyList) {
function renderTemplate(renderContext: SPClientTemplates.RenderContext) {
let ctx = renderContext as MyList;
const rows = ctx.ListData.Row;
let result = '';
for (const row of rows) {

View File

@ -631,7 +631,7 @@ configuration = {
performance,
};
function loader(this: webpack.loader.LoaderContext, source: string, sourcemap: string): void {
function loader(this: webpack.loader.LoaderContext, source: string | Buffer, sourcemap: string | Buffer): void {
this.cacheable();
this.async();