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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jQuery Lightbox图片放大预览

    简介:jQueryLightbox图片放大预览代码是一款可以在用户点击页面中的小图片时,将该图片的高清版本以Lightbox的方式放大显示在页面的中间,提高用户的体验度。效果展示 http

    2021年12月28日
    38
  • ASP.NET中DropDownList 的使用

    ASP.NET中DropDownList 的使用1.如何避免DropDownList下拉框中重复值出现?AppendDataBoundItems:为是否填加重复值。真为添加,假为不填加 将DropDownList控件中AppendDataBoundItems属性设置为“False”即可。 2.如何给DropDownList添加项?//1.PreRender事件,在呈现该页前激发protectedvoidDropDow…

    2022年10月17日
    6
  • FRP内网穿透_frp内网穿透原理

    FRP内网穿透_frp内网穿透原理frp点对点udp方式内网穿透ssh,节省服务器流量(2019年5月30日) frpssh安全连接和服务器安全设置(2019年5月29日) frp控制台监控dashboard配置(2019年5月27日) frp内网穿透公网访问本地web服务(2019年5月26日) frp安装教程穿透SSH(2019年5月25日) fr…

    2025年11月6日
    3
  • oracle 函数 如何编写

    oracle 函数 如何编写创建函数的基本格式createorreplacefunction函数名称(参数1,参数2)return参数类型iscreateorreplacefunctiongetPreferentialPrice(priceRetinnumber,clientIdinvarchar2,dd_outp_classinvarchar2)returnnumberis…

    2022年7月17日
    16
  • 页面处理指令中的AutoEventWireup

    页面处理指令中的AutoEventWireup   在页面处理指令中有个AutoEventWireup,当时不知什么原因就删了,接着就除了问题.后来才知道它是指页面的事件是否自动连网。如果启用事件自动连网,则为true;否则为false。如果页面处理指令的AutoEventWireup属性被设置为true(默认为true),该页框架将自动调用页事件。所以如果是使用code-behind技术,就要把AutoEventWireu

    2022年5月26日
    47
  • ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)

    ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)前言最近博主为了准备七月份的百度之星的算法比赛,把C++STL的相关语法又重新学习了一遍,然后整理成此文,本文内含string、vector、deque、stack、queue、list、set、map共9种容器的概念及常用操作语法,以及对STL的遍历、查找、排序、替换、算术生成等常用算法的用法和示例,供读者阅读收藏,学习参考。给大家推荐博主本人学习过的一个c++STL质量极高的课程链接:C++进阶之STL,很适合0基础想快速入门C++STL的朋友,关于想进阶的朋友,可以去看候捷老师的C++S

    2022年7月18日
    15

发表回复

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

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