typescript - PowerBI-visuals-verktyg d3 import


Jag skapade ett nytt projekt med hjälp av PowerBI:s visuella verktyg (https://github.com/Microsoft/PowerBI-visuals-tools) och installerade sedan manuellt d3 (@^3.5.5) och dess typdefinitioner (@types/d3@^3.5.5). Det som har förbryllat mig är att inuti visual.ts i src-mappen kan jag använda d3 utan några imports, finns det någon som kan förklara varför?

module powerbi.extensibility.visual {
    "use strict";
    export class Visuall implements IVisual {
        private target: HTMLElement;
        private updateCount: number;
        private settings: VisualSettings;

        constructor(options: VisualConstructorOptions) {
            console.log('Visual constructor', options);
            this.target = options.element;
            this.updateCount = 0;
        }

        public update(options: VisualUpdateOptions) {
            this.settings = Visual.parseSettings(options && options.dataViews && options.dataViews[0]);
            console.log('Visual update', options);
            this.target.innerHTML = `<p>Update count: <em>${(this.updateCount++)}</em></p>`;
            console.log(d3); // no error whatsoever
        }


        private static parseSettings(dataView: DataView): VisualSettings {
            return VisualSettings.parse(dataView) as VisualSettings;
        }

        /**
         * This function gets called for each of the objects defined in the capabilities files and allows you to select which of the
         * objects and properties you want to expose to the users in the property pane.
         *
         */
        public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] | VisualObjectInstanceEnumerationObject {
            return VisualSettings.enumerateObjectInstances(this.settings || VisualSettings.getDefault(), options);
        }
    }
}

Svar #1

Jag talar naturligtvis inte som någon form av auktoritet i frågan, men det verkar som att det Power BI Visuals API-teamet har gjort är att flytta ansvaret för att länka filer till byggprocessen. Om du tittar i filen pbiviz.json finns det en egenskap för "externalJS" som ska innehålla alla js-referenser du kommer att använda. Eftersom de refereras där tror jag att det är tänkt att förhindra att du behöver göra det i dina TypeScript-filer.