Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在基于内部模块的项目中使用扩展@类型

如何在基于内部模块的项目中使用扩展@类型
EN

Stack Overflow用户
提问于 2018-03-01 07:39:56
回答 1查看 362关注 0票数 1

当我不使用名称空间时,我需要一些指导来做一些基本的事情。在本例中,我使用的是leaflet (映射的javascript)和leaflet.heat (制作热图的传单插件)。在不影响名称空间/模块的情况下,导入它们就像这里指出的那样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as L from 'leaflet';
import 'leaflet.heat';

但是,由于我使用的是Power自定义可视化,所以我必须按照他们的方式构建解决方案,即只使用内部模块。因此,为了导入库,我在tsconfig.json中添加了@types tsconfig.json文件引用,在pbiviz.json中添加了.js引用。

在建立了引用之后,我能够访问传单元素,方法是编写名称空间,然后是在它的类型中定义的名称空间。例如L.map()L.TileLayer等,但我无法访问任何扩展基本传单模块的内容。

我尝试重新排序@types导入,修改文件以某种方式合并到L命名空间中,导入类似于import 'leaflet.heat';,但似乎没有什么能使它识别该类型。

下面的代码使编译器说:名称空间中的ts导入声明不能引用模块。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module powerbi.extensibility.visual {
    import 'leaflet.heat';
    ...
}

另一种方式也会抱怨:除非“--模块”标志是“amd”或“system”,否则ts不能使用“out”选项编译模块。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'leaflet.heat';
module powerbi.extensibility.visual {
    ...
}

有什么想法,我可以尝试让它识别类型吗?到目前为止,我找到的解决办法是把它投给任何人,但我不喜欢它。(L as any).heatLayer()

我使用的是类型记录2.7.2,这是我的tsconfig.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
"compilerOptions": {
    "allowJs": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "ES5",
    "sourceMap": true,
    "out": "./.tmp/build/visual.js"
},
"files": [
    ".api/v1.10.0/PowerBI-visuals.d.ts",
    "node_modules/powerbi-visuals-utils-dataviewutils/lib/index.d.ts",
    "node_modules/powerbi-visuals-utils-tooltiputils/lib/index.d.ts",
    "node_modules/@types/d3/index.d.ts",
    "node_modules/@types/geojson/index.d.ts",
    "node_modules/@types/jquery/index.d.ts",
    "node_modules/@types/leaflet/index.d.ts",
    "node_modules/@types/leaflet.heat/index.d.ts",
    ...
}

链接到相应的@types

EN

回答 1

Stack Overflow用户

发布于 2018-10-07 20:36:46

powerbi-visuals-utils-dataviewutils是一个非常棘手的库。如果您正在编写纯TypeScript,而没有集成外部js文件,我希望您有一个好的计算机椅子,因为您将在计算机前坐一段时间,然后才能找到关于这个问题的连贯对话。您可能会认为会有更多的人分享他们是如何将代码解耦的,这样src/visual.ts al.ts就不会变成一个大泥球……

下面是我最接近于识别扩展类的powerbi:

创建一个新的.ts文件(在类中键入以下内容):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
namespace dev {
    export function foo(): any { }
    export class bar { 
    } 
}

不要忘记更新tsconfig.json:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "compilerOptions": {
    "allowJs": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "ES5",
    "sourceMap": true,
    "out": "./.tmp/build/visual.js"
  },
  "files": [
    ..
    "src/NameOfTsFileHere.ts"
  ]
}

在src/visual.ts al.ts中,名称空间dev现在应该可以通过引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module powerbi.extensibility.visual {
    "use strict";

    export class Visual implements IVisual {

        constructor(options: VisualConstructorOptions) {
            let obj: dev.foo();
        }
    }
}

其他要注意的事情:我不认为现在可以从新的.ts文件中引用外部库。如果您使用的是像d3、lodash等库,那么假设"dev“命名空间在编译时是转义的(如果输出是ES5),那么窗口变量将不可用,因此在如何传递对这些库的引用时,您必须具有创造性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49053319

复制
相关文章
Hibernate延迟加载
上一篇文章我们学习了Hibernate的多表关联关系,这里就涉及到一个很实用的概念:延迟加载或者也叫惰性加载,懒加载。使用延迟加载可以提高程序的运行效率。Java程序与数据库交互的频次越低,程序运行效率越高,所以我们应该尽量减少Java程序与数据库的交互次数,Hibernate延迟加载就很好的做到了这一点。
南风
2019/04/22
1.4K0
Hibernate延迟加载
Spring整合Hibernate、Hibernate JPA、Spring Data JPA、Spring Data Redis
环境说明,使用Jdk1.8版本,spring4.2.0.RELEASE版本、hibernate5.0.7.Final版本,spring-data-jpa-1.9.0.RELEASE版本、spring-data-redis-1.6.0.RELEASE版本。
别先生
2020/05/27
5.6K0
Hibernate之延迟加载
文章目录 1. hibernate之延迟加载 1.1. 什么是延迟加载 1.2. 好处 1.3. 如何使用延迟加载 1.4. 使用延迟加载需要注意的问题 hibernate之延迟加载 什么是延迟加载 在使用某些Hibernate方法查询数据的时候,Hibernate返回的只是一个空对象(除了id外属性都为null),并没有真正的查询数据库。而是在使用这个对象的时候才会出发查询数据,并将查询到的数据注入到这个空对象中,这种查询时机推迟到对象访问时的机制称之为延迟加载。 简单的说,使用延迟加载获取的对象,只
爱撒谎的男孩
2019/12/31
9320
hibernate延迟加载详解
hibernate延迟加载详解 Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hibernate 的运行性能。 下面先来剖析 Hibernate 延迟加载的“秘密”。 集合属性的延迟加载 当 Hibernate 从数据库中初始化某个持久化实体时,该实体的集合属性是否随持久化类一起初始化呢?如果集合属性里包含十万,甚至百万的记录,在初始化持久化实体的同时,完成所有集合属性
Java帮帮
2018/03/19
1.4K0
hibernate延迟加载详解
Spring整合Hibernate JPA
JPA:就是由Sun公司提供的一套对于持久层操作的标准(接口加文档),没有具体的实现。
害恶细君
2022/11/22
1.2K0
Hibernate延迟加载 lazy loading
/**  *  * @author XHW  *  * @date 2011-7-18  *  */ public class HibernateTest {  public static void main(String[] args) {   new HibernateTest().update();  }  public void update(){   Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();   session.beginTransaction();  Category category=(Category)session.get(Category.class, 1);   System.out.println("id:"+category.getId()+"  ,name:"+category.getName()+", description:"+category.getDescription());   Set<Product> products=category.getProducts();   session.getTransaction().commit();    } }
Hongten
2018/09/18
1.1K0
Hibernate 和 JPA
Hibernate 在 5 以后的版本中全面推进使用 JPA 的查询语法,甚至准备废弃掉自己已有的查询语法。
HoneyMoose
2022/01/13
5070
Hibernate 和 JPA
Hibernate 的延迟加载(懒加载)简介1
什么是延迟加载: 在使用某些Hibernate方法查询数据时,Hibernate返回的只是一个空对象(除id外属性都为null),并没有真正查询数据库。而在使用这个对象时才会触发查询数据库,并将查询到的数据注入到这个空对象中。这种将查询时机推迟到对象访问时的机制称之为延迟加载。 ---- 为什么要使用延迟加载: 可以提升内存资源的使用率 可以降低对数据库的访问次数 ---- 采用延迟加载的方法: session.load() 查询时不进行SQL查询,在使用对象时才执行SQL查询;效率高 query.i
qubianzhong
2018/08/10
1.4K0
JPA、Hibernate、Spring Data JPA 的关系,你懂吗?
来源:https://my.oschina.net/u/3080373/blog/1828589
Java技术栈
2019/07/31
1.8K0
Spring全家桶之SpringData——Spring 整合Hibernate与Hibernate Jpa
注意 1. sql语句 ,是通过对象查询的表 ,虽然可以出现select 但是却不能出现通配符 *,故可以省略 Select * 2 .区别 getCurrentSession 与openSession 方法的用法 getCurrentSession:当前session 必须要有事务边界, 且只能处理唯一的一个事务。当事务提交或者回滚后session 自动失效 openSession:每次都会打开一个新的session.加入每次使用多次。则获得的是不同session 对象。使用完毕后我们需要手动的调用colse方法关闭session
时间静止不是简史
2020/07/25
2.9K0
Hibernate Session和Jpa EntityManager
本文适用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE 。
pollyduan
2019/11/04
2.1K0
使用Spring Boot,JPA,Hibernate和Postgres的多租户应用程序
多租户是一种方法,应用程序实例由不同的客户使用,从而降低软件开发和部署成本,与单一租户解决方案相比,在这种解决方案中,需要触及多个部分以提供新客户端或更新现有租户。
Java架构师历程
2018/09/26
7.8K1
使用Spring Boot,JPA,Hibernate和Postgres的多租户应用程序
spring data jpa hibernate jpa 三者之间的关系
JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现,JBoss应用服务器底层就以Hibernate作为JPA的实现。
用户3148308
2018/09/13
1.3K0
spring data jpa hibernate jpa 三者之间的关系
mybatis和hibernate的以及jpa区别_hibernate sql
hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。
全栈程序员站长
2022/09/30
1.2K0
mybatis和hibernate的以及jpa区别_hibernate sql
JPA、Hibernate、Spring data jpa之间的关系,终于明白了
全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。
hbbliyong
2018/07/24
1.5K0
JPA、Hibernate、Spring data jpa之间的关系,终于明白了
JPA、Hibernate、Spring data jpa之间的关系,终于明白了
全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。
java思维导图
2018/07/26
2.3K0
JPA、Hibernate、Spring data jpa之间的关系,终于明白了
Spring Data JPA 介绍和使用
Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架几乎能做的任何事情。下面来逐步介绍它的强大功能。
乐百川
2022/05/05
3.6K0
JPA/Hibernate问题汇总
报错很明显,是由于hibernate的懒加载引起的。项目使用的是SpringBoot框架,JPA默认使用的是hibernate的实现,而hibernate的懒加载机制其实就是延迟加载对象,如果没有在session关闭前使用到对象里除id以外的属性时,就只会返回一个没有初始化过的包含了id的代理类。很多时候,这个代理类会引发上述的异常。
雨临Lewis
2022/01/12
2.6K0
spring-boot开发过程中的问题汇总
在application.properties中加上spring.jpa.properties.hibernate.default_schema=[user],由于oracle不同表空间下可以有同名表,而表的访问都是user.table,这样来区分不同表空间同名表造成的问题。
sucl
2019/08/07
1.3K0
聊聊spring data jpa的OpenSessionInView
本文主要研究一下spring data jpa的OpenSessionInView
code4it
2019/04/13
3.8K0
聊聊spring data jpa的OpenSessionInView

相似问题

为什么我的HttpClient.SendAsync被取消了?

23

绝对定位:为什么我的盒子被抵消了?

11

为什么我的地图标记ObjectAnimators被取消了?

10

为什么这个功能被取消了?

21

为什么这个孩子被抵消了?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文