Skip to content
This repository was archived by the owner on Aug 9, 2021. It is now read-only.

Improve "Function Types" supportΒ #6

@fvoronin

Description

@fvoronin

type2docfx (v0.9.79) has a problem with function types described with an interface.
For example, we have a module:

export interface ObservableGetter<T> {
    (): T;
}
export interface ObservableSetter<T> {
    (v: T): void;
}

export interface ObservableProperty<T> extends ObservableSetter<T>, ObservableGetter<T> {
}

export default class Observable {
    static accessor<T>(name: string): ObservableProperty<T>;
    static accessor(name: string) {
        return function(v?) {
            if (arguments.length) {
                // call internal set method
            } else {
                // call internal get method
            }
        }
    }
}

Run typedoc (v0.11.1) on it with json output and get result api.json.

If we pass that api.json to type2docfx, we get an error:

> type2docfx api.json .\
Class: test.Observable
 - Method: test.Observable.accessor
Interface: test.ObservableGetter
Interface: test.ObservableProperty
...\type2docfx\dist\jsonTraverse.js:220
    method.syntax.parameters = fillParameters(node.signatures[signatureIndex].parameters);
                             ^

TypeError: Cannot set property 'parameters' of undefined
    at extractInformationFromSignature (...\type2docfx\dist\jsonTraverse.js:220:30)
    at traverse (...\type2docfx\dist\jsonTraverse.js:199:17)
    at ...\type2docfx\dist\jsonTraverse.js:210:17
    at Array.forEach (<anonymous>)
    at Object.traverse (...\type2docfx\dist\jsonTraverse.js:205:23)
    at Object.<anonymous> (...\type2docfx\dist\main.js:78:20)
    at Module._compile (module.js:649:30)
    at Object.Module._extensions..js (module.js:660:10)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:501:12)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions