当前位置: 首页 > 软件库 > 程序开发 > >

ember-arg-types

授权协议 MIT License
开发语言 JavaScript
所属分类 程序开发
软件类型 开源软件
地区 不详
投 递 者 贝凯
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ember-arg-types

Build Status

Runtime type checking & defaulting for glimmer component arguments powered by prop-types & decorators.

Motivation

ember-arg-types provides a decorator (@arg) that maps glimmer arguments to local component properties. This allows default values and type checking to be easily declared (and documented) in your component JS file.

Example:

@arg(string)
sortBy = 'id';

Instead of this:

get sortBy() {
  const { sortBy='id' } = this.args;
  assert('`sortBy` must be a string', typeof sortBy === 'string');
  return sortBy;
}

Argument Mapping & Default Values

The @arg decorator maps this.args values to local component properties. If a mapped argument has a value of undefined, @arg will return the local property's initializer value.

Here the value of this.sortBy is the value of this.args.sortBy, unless this.args.sortBy is undefined. If undefined, the value of this.sortBy will be 'id'.

@arg
sortBy = 'id';

Here the value of this.id is the value of this.args.id, unless this.args.id is undefined. If undefined, the value of this.id will be computed by the getter.

@arg
get id() {
  return guidFor(this);
}

Type Checking

ember-arg-types uses the popular prop-types library for runtime type checking.

By importing type validators from prop-types, you can specify a type check parameter to @arg:

import Component from '@glimmer/component';
import { arg } from 'ember-arg-types';
import { string } from 'prop-types';

export default class CharacterComponent extends Component {
  // `name` string arg that is required
  @arg(string.isRequired)
  name;
}

Example Type Check Error

{{!-- @name should be a string, not a number --}}
<CharacterComponent @name={{123}}>

Prop Type Docs

You can find more information on prop-type validators here: Prop Type Usage Docs

Disable Errors

If an argument value fails a validation check, an Error will be thrown (in non-prod environments) by default. To disable throwing Errors , update your config/environment.js with the following:

'ember-arg-types': {
  // Throw errors instead of logging (default is true)
  throwErrors: false
}

Production

Since component type checks are not typically performed in production, prop-types replaces the library with function shims for production builds, resulting in a smaller bundle size.

Installation

ember install ember-arg-types

Usage

Example Component Definition

// character-component.js

import Component from '@glimmer/component';
import { arg } from 'ember-arg-types';
import { func, number, oneOf, string } from 'prop-types';
import { guidFor } from '@ember/object/internals';

const tunics = ['green', 'red', 'blue'];

export default class CharacterComponent extends Component {
  // `id` string arg with a getter default value
  @arg(string)
  get id() {
    return guidFor(this);
  }

  // `name` string arg that is required
  @arg(string.isRequired)
  name;

  // `title` arg with default value and no type check
  @arg
  title = 'hero';

  // `tunic` arg with set of valid string values and a default
  @arg(oneOf(tunics))
  tunic = tunics[0];

  // `hearts` number arg with default value
  @arg(number)
  hearts = 12;

  // `level` number arg without default value
  @arg(number)
  level;

  // `onClick` action (function) arg with noop default value
  @arg(func)
  onClick = () => null;
}
{{!-- character-component.hbs --}}

{{!-- args are mapped to local properties, thus we use this.<argName> instead of @<argName> --}}
<div class="character" role="button" {{on "click" this.onClick}}>
  <div class="id">{{this.id}}</div>
  <div class="name">{{this.name}}</div>
  <div class="title">{{this.title}}</div>
  <div class="tunic">{{this.tunic}}</div>
  <div class="hearts">{{this.hearts}}</div>
  <div class="level">{{this.level}}</div>
</div>

Example Component Invocation

<Character
  @name="link"
  @title="hero of time"
  @level=2
  @onClick={{this.onClick}}
/>

Compatibility

  • Ember.js v3.8 or above
  • Ember CLI v2.13 or above
  • Node.js v8 or above

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.

  • 简单的说,我们用va_arg(ap,type)取出一个参数的时候, type绝对不能为以下类型: ——char、signed char、unsigned char ——short、unsigned short ——signed short、short int、signed short int、unsigned short int ——float 一个简单的理由是: ——调用者绝对不会向my_pri

  •     出现上面这个问题时我查了一下,有说用管理员身份打开keil软件就能进行正常的编译,我试了一下发现可以,然后我就思考这个问题:能不能不用每次用管理员身份打开就能顺利编译呢,分析问题如下     1.用管理员身份运行能成功编译说明keil的文件stdint.h应该没问题,文件应该是存在且正常的,并不需要像网上有些说的那样要重装keil或者是要在工程中再添加文件     2.既然文件没问题,那么

  • C语言编译时: void S34S_set();括号参数类型未指明,出现give arg types警告; void S34S_set(void);不会出现give arg types警告。 原因分析: C语言中,使用void来指示函数声明中不需要参数。即若函数没有形参,必须加上void,即S34S_set(void); C语言中,函数fun()的默认含义是fun()函数有任意多的参数,并非我们的

  • 当使用 fs.readFileSync 读取json文件,然后用 JSON.parse() 时,出现上述错误。正确的方法是加上 utf-8 参数: const raw = fs.readFileSync(filepath, 'utf-8') const donwloadObj = JSON.parse(raw)

  • 在声明函数时,如果该函数没有参数就要在括号里加“void” 例如 函数定义 void LED_GPIO_Init() {         GPIO_InitTypeDef  GPIO_Init_Struct;         GPIO_Init_Struct.GPIO_Pin    = LED_GPIO_PIN;         GPIO_Init_Struct.GPIO_Mode   = GPI

  • 因为是基础,所以一定要吃透,记牢。归整一下,方便记忆。 A type defined within a class or struct is called a nested type. For example: class Container {     class Nested     {         Nested() { }     } } //class 里面可以定义 class and

  • TypeError: isinstance() arg 2 must be a type or tuple of types 问题出在今天使用Python学习代码的时候敲到下面的语句便出现了该错误 isinstance(“abcd”,str) 其实方法很简单,错误产生的原因是因为我在练习代码的时候对str进行了赋值,导致了abcd这个字符串比较的时候报错,然后我就试了一下和int、float比较,

  • 今天分享一个常见的告警原因以及其解决方法 告警 首先,我们看一下这个告警提示:warning #1295-D Deprecated declaration xxxxx - give arg types,翻译过来就是:不推荐的声明xxxxx-需要给定参数类型。 其实这个警告是因为你的函数没有参数的话,需要定义和声明的时候添加void,如下: void test_1() //没有加void就会告警提

  • 出现这种原因,也有可能: .format() 写成了 ,format() (o_ _)ノ 仔细检查检查(哭了)

  • 出现报错:isinstance() arg 2 must be a type or tuple of types 1.检查自己是否以list、str等类型名作为了变量名 2.更改之后重启编译器,否则还会报错

  • 编译程序时出现“Deprecated declaration response_uart_heartbeat - give arg types”中文释义:给定函数的参数的类型过时,   解决办法: 在函数void response_uart_heartbeat()声明和定义的时候定义参数类型,无参函数定义为void,即可解决该问题。

  • 检查在申明没有参数的函数,是不是写掉了void,加上就可以去掉这个warning了。 如: void Delay_ms_init(void);   规范编程,就没有问题了! 转载于:https://www.cnblogs.com/Hocker/p/5391097.html

 相关资料
  • arg

    Arg arg is an unopinionated, no-frills CLI argument parser. Installation npm install arg Usage arg() takes either 1 or 2 arguments: Command line specification object (see below) Parse options (Optiona

  • 本文向大家介绍 *arg和**kwarg作用相关面试题,主要包含被问及 *arg和**kwarg作用时的应答技巧和注意事项,需要的朋友参考一下  

  • ARG 构建参数 格式:ARG <参数名>[=<默认值>] 构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是,ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用 ARG 保存密码之类的信息,因为 docker history 还是可以看到所有值的。 Dockerfile 中的 ARG 指令是定义参数名称,以及定义其默认值。该默认值可以在构建

  • Ember检查器是一个浏览器插件,用于调试Ember应用程序。 灰烬检查员包括以下主题 - S.No. 灰烬检查员方式和描述 1 安装Inspector 您可以安装Ember检查器来调试您的应用程序。 2 Object Inspector Ember检查器允许与Ember对象进行交互。 3 The View Tree 视图树提供应用程序的当前状态。 4 检查路由,数据选项卡和库信息 您可以看到检查

  • 最新版本的量角器(4.0.9)、chromedriver(2.24)、chrome(54.0)。在执行browser.navigate().back()时,我们可以观察到以下错误。 失败:未知错误:丢失或无效的arg值(会话信息:chrome=54.0.2840.71)(驱动程序信息:chromeDrive=2.24.417431 (9aea000394714d2fbb20850021f6204f