Comments (5)
The comment was left over from the original repro, because the original author wanted object | null
to mean object
, even with noImplicitAny: false
.
from typescript.
Expected and Actual are swapped, I think?
from typescript.
No, it's the right way round. object
becomes any
when noImplicitAny: false
, and signature quickinfo should reflect that.
from typescript.
So this runs into an existing weird situation with reusing existing type declaration. It's not even unique to JSDoc types.
type /*1*/O = {
/*2*/foo: any | string
}
At marker 1 we can see:
type O = {
foo: any | string;
}
but at marker 2 we can see:
(property) foo: any
Note that declaration emit preserves any | string
here even in 5.4.
The reason why the type for @param
gets printed as any
is that it's the computed symbol's type that gets printed. When we hover over the function's symbol we end up serializing that symbol using serializeTypeForDeclaration
(called by symbolToParameterDeclaration
) and that prefers reusing the existing type node.
It's enough to wrap the type in this original repro into an object to get consistent non-reduced results:
/**
* @param {{prop: object | null}} o
*/
function create2(o) {}
create2/*1*/(undefined);
With the above, { prop: object | null; }
gets printed consistently. But that consistent result is misleading since the user won't easily notice that it's an any
in disguise.
from typescript.
@sandersn In that case, it’s not true that create(undefined)
“should error”. That’s why I asked. 😉
from typescript.
Related Issues (20)
- Intellisense stops working after exporting interface HOT 1
- Object is possibly 'null' when using type guard for for loops HOT 2
- Feature request: Override and extend callback argument
- Getters in mixins get serialized to property accessors HOT 1
- TS incorrectly flags a side effect-only import as TS5097 (An import path can only end with a '.ts' extension...) in `--watch` mode HOT 8
- Add typings for Iterator instance methods: take, find, map, etc. HOT 2
- instanceof has been used and there is a type inference error HOT 3
- False positive ts(2373)
- Type narrowing not work HOT 10
- `Uint8Array.prototype.constructor` is missing/incorrect type, and probably much more HOT 8
- Template Literal Type JSX children prop issue HOT 2
- [isolatedDeclarations] Add a syntactic form of computed property name which is always emitted as a computed property name HOT 5
- "Move to file" on global code unnecessarily imports/exports, generates invalid code HOT 3
- Wrong type on when using logical operators in nested conditions HOT 3
- Narrowing for constant indexed access fails on array getter HOT 3
- Design Meeting Notes, 6/7/2024 HOT 6
- Typescript 5.5 performance regression on arktype HOT 2
- Assertion violation in "move to new file"
- [nightly] Syntactically invalid declaration files emitted under extremely specific conditions HOT 1
- Make TypeScript Compilable to Native Machine Code! HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript.