首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >typescript动态属性名称映射到函数名称的类型

typescript动态属性名称映射到函数名称的类型
EN

Stack Overflow用户
提问于 2021-06-20 04:20:43
回答 2查看 63关注 0票数 2

我的函数看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
function calc(a, b){
  return a + b
}

我能弄到它的名字

calc.name

并得到'calc‘这个名字。

我也有create函数

代码语言:javascript
运行
AI代码解释
复制
interface ICreateResult {
  [???]: string;
  'key': string;
}

function create(func): ICreateResult{
  return {
    [func.name]: 'some value',
    'key': 'some value'
  }
}

如何让typescript进行验证

代码语言:javascript
运行
AI代码解释
复制
const obj = create(calc);
obj.calc // intellisense by typescript
obj.abc() // error
EN

回答 2

Stack Overflow用户

发布于 2021-06-20 06:38:17

据我所知,您希望将一个函数作为参数传递给create。让我们尝试对您的代码进行一些更改,并将其转换为:

代码语言:javascript
运行
AI代码解释
复制
function calc(a: number, b: number) {
  return a + b;
}

function abc() {

}

type strictType = {
  funcSyntax: (a: number, b: number) => number
}

interface ICreateResult {
  funcCall: (a: number, b: number) => number;
  funcName: string;
  key: string;
}

function create(arg: strictType): ICreateResult {
  return {
    funcCall: arg.funcSyntax,
    funcName: arg.funcSyntax.name,
    key: 'some value',
  }
}
const crt = create({ funcSyntax: calc });
console.log(crt.funcCall.call(null, 4, 5));//9
console.log(crt.funcName);//calc

const crt2 = create({ funcSyntax: abc })//error
票数 0
EN

Stack Overflow用户

发布于 2021-06-20 08:39:53

我认为这在当前版本的TypeScript中是不可能的。

请参见示例:

代码语言:javascript
运行
AI代码解释
复制
const x = (a: number) => a

type FnName = (typeof x)['name'] // string

FnName被推断为string,而不是文字字符串类型x

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

https://stackoverflow.com/questions/68052647

复制
相关文章
Python 动态获取当前运行函数名称
本文记录Python动态获取函数名称的方法。 方法1 使用 sys 库 import sys sys._getframe().f_code.co_name 方法2 使用 inspect 库 import inspect inspect.stack()[1][3] 参考资料 https://www.cnblogs.com/yoyoketang/p/9231320.html
为为为什么
2022/08/05
2.1K0
11-TypeScript中的名称空间
在后端开发语言中,比如C#中,可以将不同源代码文件中的代码通过名称空间组合到一起。一般一个类定义在一个源代码文件中,在功能上属于一个上下文的源代码文件通过名称空间进行组织。 在TypeScript中,可以将多个ts文件组织到一个名称空间中,这样调用方就可以使用名称空间和类名完成调用。在TypeScript中,通过module关键字定义名称空间,另外要通过名称空间完成成员 的访问,成员必须指定export关键字。 ts文件一: module Hys{ export class Doctor{
用户1910585
2018/05/04
1.1K0
获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎
先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以在运行时装配。在实际的业务中,可能会动态根据属性去获取值。 工具类如下: package com.yaoguang.common.utils.field; import java.beans.Bean
猿人谷
2018/01/17
6.5K0
动态图表12|滑块(函数+名称管理器)
今天要跟大家分享的是动态图表12—滑块(函数+名称管理器)! 今天要讲的这篇与前一篇的步骤基本一致,但是所用到的控件工具有所不同。 步骤: 插入滑块(设置数据源和单元格链接) 制作动态数据源 插入图
数据小磨坊
2018/04/10
1.1K0
动态图表12|滑块(函数+名称管理器)
python-函数的对象、函数嵌套、名称
内存存储变量名与变量间的绑定关系的空间(存放变量名的空间),这个空间被称为名称空间。
py3study
2020/01/15
2.4K0
Spring使用p名称空间配置属性
Spring的p标签是基于XML Schema的配置方式,目的是为了简化配置方式。
大黄大黄大黄
2018/09/14
9410
Spring使用p名称空间配置属性
TypeScript函数的类型
函数声明 在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression): 函数声明(Function Declaration)
conanma
2021/12/07
2K0
Jenkins Pipeline动态使用Git分支名称的技巧
在上一篇 Jenkins 使用环境变量 中,帮助大家使用一条 Docker 命令就可以快速玩转 Jenkins,同时用最简单的方式解释了 Jenkins 中让人混乱的环境变量,本文还是接着变量说点事情
程序猿DD
2021/07/13
1.3K0
Jenkins Pipeline动态使用Git分支名称的技巧
spring开发_使用p名称空间配置属性
http://www.cnblogs.com/hongten/gallery/image/112563.html
Hongten
2018/09/13
4570
java通过反射获取类中public 方法的返回类型 方法名 参数类型和属性类型及名称
1.java通过反射获取类中public 方法的返回类型 方法名 参数类型的实现方法并打印出来.
程序员小藕
2021/07/08
5.3K0
TypeScript函数类型
通过如下代码我们实现了一个返回值为number类型的方法,同时我们也对返回值和参数进行了约束
HueiFeng
2020/04/09
7600
TypeScript函数类型
通过如下代码我们实现了一个返回值为number类型的方法,同时我们也对返回值和参数进行了约束
HueiFeng
2020/04/10
7970
名称空间
using 声明和using 编译指令 using 声明将特定的名称添加到它所属的声明区域中。 using std::cout; 将cout添加到声明区中,声明扣可以用cout<<代替 std::cout<< int main() {   using std::cout;   cout<<"a";   std::cin.get(); } using声明使一个名称可用,而using 编译指令使所有的名称都可以用。 using namespace std; int main() {   cout<<"aa";
lpxxn
2018/01/31
1.8K0
函数 (二) 名称空间与作用域
一、什么是名称空间 我们写一段代码,里面肯定会定义一些变量名,函数名,而一旦我们运行代码,python解释器在加载这些代码的时候,会在内存中开辟一片空间专门用来存放这些名字以及这些名字所绑定的值的关系, 这块内存就被称为名称空间。 二、名称空间分类 名称空间分为三种: △内置名称空间   内置名称空间是用来存放python解释器的一些内置方法明以及变量名的。这些名称是在解释器启动的时候就加载好的,我们随时可以调用。比如常见的 print( )、input( )、len( )等都是内置方法,我们在写代码的时候
人生不如戏
2018/04/12
8140
【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
函数类型格式 : 圆括号中定义 参数类型列表 , 使用 -> 由参数列表指向返回值类型 , 表示接受 参数类型列表 中的参数 , 返回 返回值类型 的返回值 ;
韩曙亮
2023/03/27
2.8K0
53. Vue名称案例-使用computed计算属性
前面在写名称拼接案例的时候使用了keyup监听文本框,还使用了watch来监听数据变化,那么本篇章来使用computed计算属性来监听实现。
Devops海洋的渔夫
2022/01/17
5790
53. Vue名称案例-使用computed计算属性
名称空间namespace
结构:例子:创建名为Jack的名称空间namespace Jack {int pal;void fetch();//可在后面再次使用名称空间定义函数struct Well{...};...}提供函数定义namesoace Jack{void fetch(){...}}访问命名空间:Jack::pal=12;Jack::Well mode; //创建Well结构类型元素modeJAck::fetch();------特征:可以全局,也可以位于另一个名称空间中,但不能在代码块中任何名称空间中的名称都不会与其他名
Alan_1
2023/04/30
9530
备案的网站名称怎么写 起备案的网站名称的建议
想要建立网站的个人和公司,在备案的网站名称怎么写的问题上很困惑,因为在审核的过程中,有很多名字是不合格的,会有专门的工作人员联系建立者,给建立者打电话。还有的建立者提交好多次,改了好多次的名都被驳回,一直搞不清楚自己哪里出现了不合规的现象。现在就带大家来看一下,如何给备案的网站起名。
用户8715145
2021/10/08
7.1K0
service DNS名称
DNS服务监视kubernetes API,为每一个service创建DNS记录用于域名解析 clusterIP A记录格式:
院长技术
2020/12/07
1.1K0
动态图表11|数值调节器(名称管理器+offset函数)
今天跟大家分享的是动态图表11——使用调节器控件制作动态图表! 本案例会将之前10篇的动态图表综合运用,会用到index函数、offset函数、数值调节器、名称管理器等多种技巧! 作为对之前所有动态图表技巧的巩固和综合运用! 首先我们看下今天的案例原始数据,因为一直以来都是用这个数据做的横向引用(地区维度)的图表,今天我们使用纵向引用(月份维度)。 当然,使用之前所讲的数据有效性、列表框、组合框等,可以很容易的达到目的。 但是今天,我们要使用数值调节器作为触发器生成各个月份的动态数据。 在开发工具中插入数值
数据小磨坊
2018/04/10
2.1K0
动态图表11|数值调节器(名称管理器+offset函数)

相似问题

具有动态名称的TypeScript安全类型属性

25

具有动态属性名称的Typescript

124

在TypeScript中接受动态属性名称的不同函数返回类型

22

Typescript从名称获取对象属性类型

122

动态属性的名称已用作开放类型的声明属性名称

113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文