typescript教程阮一峰_在博图里怎样定义一个变量

typescript教程阮一峰_在博图里怎样定义一个变量在TypeScript项目中像PHP一样使用魔术变量

大家好,又见面了,我是你们的朋友全栈君。

PHP 当中有许多很有用的魔术变量, 比如__CLASS__, __METHOD__之类. 但是typescript中并没有. 因此我写了一个插件typescript-magic-variable-plugin来使用它们, 源代码已经放到了GitHub上: https://github.com/acrazing/t….

使用方法

  1. 首先你需要安装这个包: npm install -D typescript-magic-variable-plugin
  2. 修改一下你的tsconfig:

    {
        "compilerOptions": {
            "plugins": [
                { "transform": "typescript-magic-variable-plugin" }
            ]
        },
        "include": [
            // ...
            "./node_modules/typescript/magic-variable-plugin/types/globals.d.ts"
        ]
    }
  3. 在代码中使用魔术变量, 比如:

    export class Foo {
        constructor() {
            console.log(__CLASS__)
        }
    }
  4. ttypescript来编译你的项目, 注意这里不能用typescript, 因为没有开放transform接口, 需要全局安装一下ttypescript: npm i -g ttypescript, 然后调用ttsc来编译.

进阶

  1. 也可以在webpack中使用:

    const { createMagicVariableTransformer } = require('typescript-magic-variable-plugin')
    // ...
    rules: [
        {
            test: /\.tsx?$/,
            loader: 'awesome-typescript-loader',
            options: {
                // ... other loader's options
                getCustomTransformers: program => ({
                    before: [
                       createMagicVariableTransformer(program, {})
                    ]
                })
            }
        }
    ]
  2. 目前支持的变量:

    name type description
    __NAMESPACE__ string the full name of the current namespace, use . to join the parents
    __CLASS__ string the class name of the declaring class
    __METHOD__ string the method name of the declaring method
    __FUNCTION__ string the function name of the declaring function
    __DIR__ string the current directory of the code
    __FILE__ string the current file full name of the code
    __LINE__ number the current line number
  3. 可以自动给React的组件添加displayName属性, 默认开启, 比如:

    export class Foo extends Component {}

    会自动给Foo增加静态属性: Foo.displayName = "Foo"

  4. 配置:

    interface Options {
        addDisplayName: boolean; // 是否给react组件添加displayName属性, 默认开启
        rootDir: string; // __DIR__的相对路径, 默认为tscofnig.json中的rootDir或者当前文件夹
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107352.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 彻底弄懂C语言数组名

    彻底弄懂C语言数组名先定义一个一维数组inta[]={0,1,2,3,4,5,6,7,8,9};一、数组名是什么数组名的值是数组首元素的指针常量。数组名不是指针,但大多数使用到数组名的地方,编译器都会把数组名隐式转换成一个指向数组首元素的指针来处理。只有两种情况下例外:第一种是对数组名使用sizeof运算符sizeof(a)这将会得到整个数组所占的内存大小,a是长度为10的int(4字节

    2022年7月11日
    24
  • (3)JMeter元件详解之 Include Controlle 包含控制器

    (3)JMeter元件详解之 Include Controlle 包含控制器

    2021年7月13日
    82
  • 谷歌离线地图开发教程视频_2019谷歌卫星地图高清版下载

    谷歌离线地图开发教程视频_2019谷歌卫星地图高清版下载bigemap如何发布google离线地图及二次开发API1.说明bigemap离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。2.实现第一步:下载安装离线地图开发环境BIEGMAP离线地图服务器(开发版)下载安装好之后,启动软件,如下图所示:①如果你的电脑连接到网络,这里可以直接点击…

    2022年9月15日
    2
  • phpstorm Linux 激活码【在线破解激活】「建议收藏」

    phpstorm Linux 激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    93
  • linux 卸载jdk_linux环境变量文件

    linux 卸载jdk_linux环境变量文件1、检查系统jdk版本:2、检测jdk安装包:3、卸载openjdk:一开始选择了直接删除openjdk文件夹后面使用了这种简单明了快捷yumremoveopenjdk4、安装新的jdk:首先到jdk官网上下载你想要的jdk版本,下载到指定的文件夹下,我一般放在/usr/lib/java。官方下载越来越慢,可以考虑一些云服务商的镜像,如华为云:wgethttps://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-lin

    2022年10月1日
    5
  • 全网解析视频接口自行测试[通俗易懂]

    全网解析视频接口自行测试[通俗易懂]http://dy.xdr630.top/v/v.php?url=http://movie.xdr630.top/jx/v.php?url=https://api.pangujiexi.com/player.php?url=http://at520.cn/jx/?url=http://player.jidiaose.com/supapi/iframe.php?v=https://jx.o…

    2025年8月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号